Hallo zusammen!
Ich habe mich hier angemeldet, da ich einfach nicht mehr weiterkomme und hoffe, hier kann mir jemand das Thema endlich in den Kopf hämmern. =D
Es geht um Rekursion. Die gängigen Beispiele dazu sind ja immer die Fakultät und die Fibonacci-Zahlen.
Die beiden kann ich auch ganz gut nachvollziehen (kann man sich ja auch schön als Baum der Methodenaufrufe aufmalen). Aber mit allem anderen tue ich mich irgendwie schwer und leider gehen alle Übungen (die ich zumindest bisher gefunden habe) nie über die beiden Funktionen hinaus (oder schießen so an meinem Horizont vorbei, dass ich lieber noch wegschaue (TowersOfHanoi z.B)). In unserem Lehrbuch tauchen allerdings auch andere Aufgaben auf, die ich gern verstehen würde.
z.B.
Irgendwie kann ich mir die Lösung bzw. den Algorithmus der Aufgabe einfach nicht so richtig vorstellen (auch der Debugger half da nicht so richtig).
In y geschieht also der rekurisve Aufruf bis p(0). Der gibt dann 1 an y zurück.
x ist nun ja auch 1 also wird geprinted 1+1 (2). Soweit so gut. Nur ab jetzt windets sich bei mir im Hirn irgendwie...
Jetzt wird ja return y+1 ausgeführt.. Wieso weshalb warum wohin wird nun y+1 returned? Usw....
Könnte mir das jemand erklären/aufmalen?
Hoffe mir kann jemand weiterhelfen!
Gruß
Ich habe mich hier angemeldet, da ich einfach nicht mehr weiterkomme und hoffe, hier kann mir jemand das Thema endlich in den Kopf hämmern. =D
Es geht um Rekursion. Die gängigen Beispiele dazu sind ja immer die Fakultät und die Fibonacci-Zahlen.
Die beiden kann ich auch ganz gut nachvollziehen (kann man sich ja auch schön als Baum der Methodenaufrufe aufmalen). Aber mit allem anderen tue ich mich irgendwie schwer und leider gehen alle Übungen (die ich zumindest bisher gefunden habe) nie über die beiden Funktionen hinaus (oder schießen so an meinem Horizont vorbei, dass ich lieber noch wegschaue (TowersOfHanoi z.B)). In unserem Lehrbuch tauchen allerdings auch andere Aufgaben auf, die ich gern verstehen würde.
z.B.
Java:
static int p(int x) {
if(x==0) return 1;
else {
int y = p(x-1);
System.out.println(x+y);
return y+1;
}
}
Irgendwie kann ich mir die Lösung bzw. den Algorithmus der Aufgabe einfach nicht so richtig vorstellen (auch der Debugger half da nicht so richtig).
In y geschieht also der rekurisve Aufruf bis p(0). Der gibt dann 1 an y zurück.
x ist nun ja auch 1 also wird geprinted 1+1 (2). Soweit so gut. Nur ab jetzt windets sich bei mir im Hirn irgendwie...
Jetzt wird ja return y+1 ausgeführt.. Wieso weshalb warum wohin wird nun y+1 returned? Usw....
Könnte mir das jemand erklären/aufmalen?
Hoffe mir kann jemand weiterhelfen!
Gruß