Hallo miteinander
Ich habe eine kleine Rekursions-Methode, die per return ausgeben soll, wie oft sie ausgeführt wird.
Der Zähler läuft wie erwartet (kontrolliert mit Syso des Zählers bei jeder Ausführung). Aber der return-Wert ist immer 1 (anstatt n=Anzahl Ausführungen).
Meine Ausgabe ist:
gelesen: 1
...
gelesen: 1000
Juhu, ich habe 1 von 1000 gelesen!
Meine Überlegung:
Darum glaube ich, dass 1000 statt 1 ausgeben werden sollte.
Wo ist mein Denkfehler?
Vielen Dank im Voraus,
Markus
Ich habe eine kleine Rekursions-Methode, die per return ausgeben soll, wie oft sie ausgeführt wird.
Der Zähler läuft wie erwartet (kontrolliert mit Syso des Zählers bei jeder Ausführung). Aber der return-Wert ist immer 1 (anstatt n=Anzahl Ausführungen).
Meine Ausgabe ist:
gelesen: 1
...
gelesen: 1000
Juhu, ich habe 1 von 1000 gelesen!
Meine Überlegung:
- Methode startet, if-Bedingung wird geprüft. Z10
- if-Body wird ausgeführt -> Rekursion mit den "neuen" Parametern. Auch der Zähler (=pagesRead) wird übergeben. Z11-Z13
- 999 weitere Rekursionsschritte. Z9-14
- Methode startet zum 1000. Mal. Zähler/pagesRead=1000. if-Bedingung wird geprüft, ist diesmal aber false. Z10
- Rest der Methode wird ausgelesen -> return Zähler/pagesRead. Z15
Darum glaube ich, dass 1000 statt 1 ausgeben werden sollte.
Wo ist mein Denkfehler?
Vielen Dank im Voraus,
Markus
Java:
public class kapitel70a3 {
public static void main(String[] args) {
int numberOfPages=1000;
int pagesRead=0;
System.out.println("Juhu, ich habe "+read(numberOfPages, pagesRead)+" von "+numberOfPages+" gelesen!");
}
public static int read (int numberOfPages, int pagesRead){
if (pagesRead<numberOfPages){
pagesRead++;
System.out.println("gelesen: "+pagesRead);
read(numberOfPages, pagesRead);
}
return pagesRead;
}
}
/*
Describe with recursion how to read a 1000 page book.
*/