Rekursive Addition mit Scanner

Nicoar

Mitglied
Hallo,

mein Kommilitone und ich sitzen gerade an Java und verzweifeln ein bisschen:

Es geht um folgendes:
Wir sollen über den Scanner Integer eingeben und die Summe dieser berechnen. Bei "0" soll das Programm beendet und die Summe ausgegeben werden. Dies mit Rekursion.

Wir haben dies bereits iterativ geschrieben:
Java:
import java.util.Scanner;
	public class Sum {
		static Scanner scanner = new Scanner(System.in);
	public static void main(String[] args) {
		
		int zahl = 0;
		int summe = 0;

		do {
		System.out.println("Bitte Zahlen eingeben (0 für Ende):");
		zahl = scanner.nextInt();

		if (zahl != 0) {

			summe += zahl;
		} 
		} while (zahl !=0);
		System.out.println (summe);
		
}}

Für die Rekursion haben wir jetzt folgenden Entwurf, kommen aber nicht weiter:
Java:
[B]public class Sum {
	public static int sum(int zahl, java.util.Scanner scan) {[/B]

		int sum = 0;
		if(zahl == 0); {
		return(sum);
		}
		return (sum += zahl);

}

	[B]public static void main(String[] args) {
		java.util.Scanner scan = new java.util.Scanner(System.in);
		System.out.println(sum(0, scan));[/B]
}
}

Ein Teil vom Entwurf wurde vom Prof vorgegeben...(fett markiert)
Wie kommen wir jetzt weiter?
Vielen Dank!!
Schönen Freitag noch :)
 
Zuletzt bearbeitet:

Joose

Top Contributor
Java:
public class Sum {
	public static int sum(int zahl, java.util.Scanner scan) {
		int sum = 0;
		if(zahl == 0); {
		return(sum);
		}
		return (sum += zahl);
}

Wie kommen wir jetzt weiter?

Naja über den Scanner mal die Zahl einlesen.
Wenn diese != 0 ist, ist der Rückgabewert die Summe aus eingelesener dem Rückgabewert der Methode "sum(int, Scanner)"
Wenn diese ==0 ist dann einfach die zahl zurückgeben.

EDIT:
[ot]
Bitte für Java-Code die
Java:
-Tags verwenden, danke!
Ich habe es bei euch leider geändert bevor ich den ganze Text gelesen hatte. Daher sind die [B]-Tags verschwunden.
Wäre es möglich diese 2 Zeilen die vorgegeben sind nochmals zu posten (ich glaube es waren die Methodensignaturen)?
Entschuldigung nochmal!
[/ot]
 
Zuletzt bearbeitet:

Nicoar

Mitglied
Hi, hier nochmal die Vorgabe vom Prof.:

Java:
 public class Sum {
public static int sum(int zahl, java.util.Scanner scan) {
 
 }


Java:
 public static void main(String[] args) {
 java.util.Scanner scan = new java.util.Scanner(System.in);
System.out.println(sum(0, scan));
 }
 }
 

Joose

Top Contributor
Danke, sorry nochmal!

Eine rekursive Methode bedeutet dass sich die Methode selber aufruft und das solange bis eine bestimmte Bedingung eintritt.
In diesem Fall ist die Bedingung wenn die eingelesen Zahl == 0 ist.
Das wäre schon mal das Grundgerüst für die rekursive Methode.

Wenn die eingelesene Zahl != 0 ist dann müsst ihr euch überlegen:
Was übergebe ich als Parameter? Addiere ich direkt die Werte und übergebe die Summe oder übergebe ich die eingelesene Zahl und addiere Parameter mit dem Rückgabewert.
 

Flown

Administrator
Mitarbeiter
Viele Menschen sehen Rekursionen als sehr schwierig an, obwohl das gar nicht so ist. Denn jede Rekursion ist gleich aufgebaut. Nämlich:

Java:
public class RecursiveSum {
  public static void main(String[] args) {
    System.out.println(sum(9));
  }
  
  // Methodenrumpf
  public static int sum(int n) {
    // Wichtigster Punkt: Abbruchbedingung!!!
    if (n == 0) {
      return 0;
    }
    // Die Rekursion
    return n + sum(n - 1);
  }
}

Bei eurem Programm ist das genau ähnlich. In Prosaform:

- 1. Aufruf aus der main-Methode von sum(0, scanner);
- Rekursionsbeginn -
- Lies die Zahl ein
- Ist die Zahl gleich 0?
- Wenn ja: Gib die Summe zurück
- Wenn nein: Ruf die Methode mit der neuen Summe auf und gib das Ergebnis der Methode zurück
- Rekursionsende -
- Zurück in der main-Methode
 
Zuletzt bearbeitet:

kaporalix

Mitglied
ich bin auch Anfänger in Java , habe die Anweisungen von Flown gefolgt und könnte es so kodieren:

Java:
public class Sum 
{
	static int summe = 0;
	public static int sum(int zahl, java.util.Scanner scan)
	{
		System.out.println("geben Sie eine zahl ein: ");
		
		int x = scan.nextInt();
		
		if( x == 0)
			return summe;
		else
			summe += x;
			return sum(summe, scan);
		
	}
	
	public static void main(String[] args)
	{
		java.util.Scanner scan = new java.util.Scanner(System.in);
		System.out.println(sum(0, scan));
	}

}

hoffe es hilft
 
Zuletzt bearbeitet:

Flown

Administrator
Mitarbeiter
Es ist schon fast richtig, aber keine Klassenvariable verwenden!
Man arbeitet mit der zahl und addiert dann die Eingabe.
Java:
if(x == 0) return zahl;
return sum(zahl + x, scanner);
 

Nicoar

Mitglied
Guten Morgen,

es hat geklappt :))!
vielen lieben Dank euch Allen!!
Das hat uns sehr geholfen, sind jetzt ein gutes Stück weiter gekommen dabei :)

Ich wünsch euch noch ein schönes Wochenende!
Lg
Nicoar
 

hello_autumn

Mitglied
Ich verstehe das nicht so ganz... Bei mir kommt immer 0 raus. Irgendwie blicke ich da nicht durch. Vielleicht könnt ihr mir auch helfen?

Hier mein Code:


Java:
import java.util.Scanner;

public class Sum {

	static int summe = 0;

	public static int sum(int current, Scanner scan){
	
		current = scan.nextInt();
	
		if(current != 0) 
			return sum(summe +  current, scan); 
		else
				
		  return summe; 
		
	
	
	}

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println(sum(0, scan));
	}
	
}
 
Zuletzt bearbeitet:

kaporalix

Mitglied
das Problem bei dir , ist dass die Variable "summe" nicht zwischen gespeichert wird, also
hier wird jedes mal sum( 0 + current, scan) aufgerufen
Java:
return sum(summe + current, scan);
also es fehlt da wo current in die summe addiert wird also :
Code:
summe = summe + current;
 

hello_autumn

Mitglied
das Problem bei dir , ist dass die Variable "summe" nicht zwischen gespeichert wird, also
hier wird jedes mal sum( 0 + current, scan) aufgerufen
Java:
return sum(summe + current, scan);
also es fehlt da wo current in die summe addiert wird also :
Code:
summe = summe + current;


Daaaaaaaanke :) Klar! :oops: Jetzt läufts :lol:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Rekursive Methode Java Basics - Anfänger-Themen 13
emreiu Methoden Rekursive Methoden Runter- & Hochzählen Java Basics - Anfänger-Themen 2
Viktor A. Kaiser Rekursive Algorithmen Java Basics - Anfänger-Themen 9
til237 Iterative Methode in rekursive Methode umschreiben Java Basics - Anfänger-Themen 4
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
J Rekursive Funktion und return statement Java Basics - Anfänger-Themen 3
S Rekursive Kombinationen Java Basics - Anfänger-Themen 6
P9cman Tipps für Rekursive Aufgaben mit Strings oder allgemein Java Basics - Anfänger-Themen 2
Csircc Rekursive Methode Stack Overflow Java Basics - Anfänger-Themen 10
schredder Rekursive Quadratzahlen - Ergebnisprozedur Java Basics - Anfänger-Themen 1
A Rekursive Implementation eines Codes Java Basics - Anfänger-Themen 4
L Rekursive Methoden Java Basics - Anfänger-Themen 14
C Rekursive Methode in Interative Methode umwandeln Java Basics - Anfänger-Themen 17
G Rekursive Methode mit 2 Aufrufen Java Basics - Anfänger-Themen 1
J Rekursive Folge (a=a-1) Java Basics - Anfänger-Themen 9
M Rekursive Java-Methode Java Basics - Anfänger-Themen 13
G Rekursive Methode liefert augenscheinlich keinen boolean-Wert zurück. Java Basics - Anfänger-Themen 4
veryck Methoden Rekursive Methoden mit Rückgabeparameter Java Basics - Anfänger-Themen 9
macle Rekursive String Methode, Gerade Zahlen rausfiltern Java Basics - Anfänger-Themen 10
M Rekursive Prüfung ob ein Array sortiert ist... Java Basics - Anfänger-Themen 4
J Rekursive swapArray Methode Java Basics - Anfänger-Themen 69
D Rekursive Methode Java Basics - Anfänger-Themen 8
R Methoden rekursive Methoden Java Basics - Anfänger-Themen 6
O Quersumme rekursive Methode Java Basics - Anfänger-Themen 3
B Treetable (rekursive Funktion) aufbauen von Datenbank Java Basics - Anfänger-Themen 4
M Rekursive Methode Programmieren Java Basics - Anfänger-Themen 3
J rekursive Methode Java Basics - Anfänger-Themen 26
M rekursive division/0 mit exception Java Basics - Anfänger-Themen 18
J Rekursive Methode - Ziffern einer Zahl ausgeben Java Basics - Anfänger-Themen 2
MiMa Rekursive Dateiliste erstellen mit Dateiendung(en) ?? Java Basics - Anfänger-Themen 4
S Rekursive Methode Java Basics - Anfänger-Themen 8
O Rekursive Methode Java Basics - Anfänger-Themen 4
V Methoden Rekursive Methode mit String als Rückgabe Java Basics - Anfänger-Themen 7
K Rekursive Methode Java Basics - Anfänger-Themen 1
K Rekursive Methode für Fakultät mit BigInteger Java Basics - Anfänger-Themen 10
L Rekursive Methode a * b berechnen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
J Methoden Rekursive Return Methode Java Basics - Anfänger-Themen 2
G Harmonische Rekursive Folge Java Basics - Anfänger-Themen 3
T Stack Overflow - Rekursive Fibonacci Java Basics - Anfänger-Themen 10
B Datentypen Suchbaum - Rekursive Ausgabe Java Basics - Anfänger-Themen 1
P Methoden Rekursive Methode für Potenzen Java Basics - Anfänger-Themen 2
M Methoden Binäre Suche als rekursive Variante Java Basics - Anfänger-Themen 5
B Rekursive Algorithmus schreiben Java Basics - Anfänger-Themen 8
S Eine rekursive Lösung Java Basics - Anfänger-Themen 4
S Int zu Hexadezimal - Rekursive Methode Java Basics - Anfänger-Themen 2
M Rekursive Suche in einem Feld Java Basics - Anfänger-Themen 11
shiroX OOP Rekursive und Iterative Definition Java Basics - Anfänger-Themen 2
B Methoden Rekursive Methoden Java Basics - Anfänger-Themen 2
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
C rekursive methode Java Basics - Anfänger-Themen 2
D Methoden Rekursive Methoden Java Basics - Anfänger-Themen 13
R rekursive Methode funktioniert nicht Java Basics - Anfänger-Themen 4
M Stürzen alle Rekursive Methoden irgendwann ab? Java Basics - Anfänger-Themen 11
D Primzahlen und Rekursive Liste Java Basics - Anfänger-Themen 29
R Rekursive Methode, Files finden Java Basics - Anfänger-Themen 2
S rekursive folge verbessern Java Basics - Anfänger-Themen 2
C rekursive Methode verstehe nicht! Java Basics - Anfänger-Themen 3
S Methoden rekursive Methode funktioniert nicht Java Basics - Anfänger-Themen 4
E Rekursive Methode Java Basics - Anfänger-Themen 3
N Methoden Rekursive Fibonaccizahlen mit Array Java Basics - Anfänger-Themen 2
R Rekursive Ausgabe eines Binärbaums Java Basics - Anfänger-Themen 4
J Methoden Rekursive Potenz ohne Math.Pow() Java Basics - Anfänger-Themen 9
A Rekursive Methode in Iterative umwandeln Java Basics - Anfänger-Themen 6
S Labyrith Rekursive Wegsuche Java Basics - Anfänger-Themen 4
C Rekursive Methode - Ziffern in Zahl Java Basics - Anfänger-Themen 33
U Dezimal zu Hexadezimal rekursive Funktion Java Basics - Anfänger-Themen 8
M rekursive Funktion zur Berechnung der Spiegelzahl Java Basics - Anfänger-Themen 7
L iterative und rekursive Folge Java Basics - Anfänger-Themen 20
G Rekursive Methode Java Basics - Anfänger-Themen 3
A rekursive Listen in Java? Java Basics - Anfänger-Themen 5
B OOP Einfach verkettete Liste - rekursive Methoden Java Basics - Anfänger-Themen 1
E Rekursive Methode mit Zufallsarray Java Basics - Anfänger-Themen 6
E Rekursive Methode Java Basics - Anfänger-Themen 18
U Rekursive lösung von pascal dreieck Java Basics - Anfänger-Themen 11
M Rekursive Methode - wo ist der Fehler? Java Basics - Anfänger-Themen 4
J rekursive methode Java Basics - Anfänger-Themen 6
H ScrollBar inaktiv / Rekursive Methode Java Basics - Anfänger-Themen 4
J Rekursive Methode Java Basics - Anfänger-Themen 11
G Rekursive Methode Java Basics - Anfänger-Themen 5
N Rekursive Berechnung der Höhe eines binären Baumes Java Basics - Anfänger-Themen 4
K Rekursive Methoden Java Basics - Anfänger-Themen 15
K Rekursive Funktion (Verständnissfrage) Java Basics - Anfänger-Themen 5
S Rekursive Bruch potenzierung Java Basics - Anfänger-Themen 2
D rekursive Summenberechnung Java Basics - Anfänger-Themen 8
J Rekursive Methode: Fakultaet berechnen Java Basics - Anfänger-Themen 5
E Rekursive definierten Folge Java Basics - Anfänger-Themen 10
A HILFE! Rekursive Funktion Java Basics - Anfänger-Themen 20
kulturfenster rekursive Binaere Suche Java Basics - Anfänger-Themen 12
F Rekursive Aufrufe, Parameterübergabe, call by reference Java Basics - Anfänger-Themen 3
G Rekursive Berechnung von n über k schlägt fehl Java Basics - Anfänger-Themen 5
B Rekursive & schreiben im ArrayList Java Basics - Anfänger-Themen 2
J Rekursive Fkt. Java Basics - Anfänger-Themen 2
A Rekursive Dateisuche Java Basics - Anfänger-Themen 12
K rekursive Funktion mit mehreren Parametern Java Basics - Anfänger-Themen 5
G rekursive Methode Java Basics - Anfänger-Themen 3
N rekursive Beispiele Java Basics - Anfänger-Themen 3
G rekursive u iterative Methode Java Basics - Anfänger-Themen 8
G Rekursive Methode Java Basics - Anfänger-Themen 7
ven000m Rekursive Funktionen - Frage Java Basics - Anfänger-Themen 16

Ähnliche Java Themen

Neue Themen


Oben