mercredi 25 février 2015
Rekursion von Hand durchführen
Posted on 04:44 by verona
Hallo,
ich habe folgenden Code:
und soll als Startwert f(3, -1) nehmen und rauskommen soll dann:
1. Aufruf: f(3,-1) 2. Aufruf: f(1,0) 3. Aufruf: f(3,0)
4. Aufruf: f(1,1) 5. Aufruf: f(3,1) 6. Aufruf: f(1,2)
7. Aufruf: f(3,2) 8. Aufruf: f(1,3) 9. Aufruf: f(3,3)
10. Aufruf: f(1,4) 11. Aufruf: f(3,4)
Ich habe das von Hand nachgerechnet für den zweiten Aufruf:
Man hat x = 3 und y = -1 und setzt diese Werte in die Funktionen nach dem Return ein also:
3*f(3-2, -1+1)-f(3, -1+1) und da kommt raus:
3*f(1,0)-f(3,0) = f(3,0)-f(3,0) = f(0,0) :bahnhof:
Kommt irgendwie nicht dasselbe bei raus, ich hab auch schon ein paar andere Aufrufe versucht zu rechnen alle Möglichkeiten versucht irgendwie diese Werte auch so hinzukriegen aber es scheint als würde der Fehler woanders stecken. Ich hab das Programm auch schon am Rechner mal ausprobiert und die vorgegebenen Werte stimmen wirklich. Wie rechnet man das nun von Hand und müsste das Programm nicht abbrechen wenn ein return ohne f(x,y) kommt und warum bricht er bei 11 erst ab und nicht schon bei 2 da dort ja auch schon eine Bedingung ohne das "Rekursionsreturn" erfüllt ist. ???:L
Danke für die Hilfe
ich habe folgenden Code:
Java Code:
- static int f(int x, int y) {
- if (y>=4)
- return 1;
- else if (x<=1)
- return 2;
- else
- return 3*f(x-2,y+1)-f(x,y+1);
- }
und soll als Startwert f(3, -1) nehmen und rauskommen soll dann:
1. Aufruf: f(3,-1) 2. Aufruf: f(1,0) 3. Aufruf: f(3,0)
4. Aufruf: f(1,1) 5. Aufruf: f(3,1) 6. Aufruf: f(1,2)
7. Aufruf: f(3,2) 8. Aufruf: f(1,3) 9. Aufruf: f(3,3)
10. Aufruf: f(1,4) 11. Aufruf: f(3,4)
Ich habe das von Hand nachgerechnet für den zweiten Aufruf:
Man hat x = 3 und y = -1 und setzt diese Werte in die Funktionen nach dem Return ein also:
3*f(3-2, -1+1)-f(3, -1+1) und da kommt raus:
3*f(1,0)-f(3,0) = f(3,0)-f(3,0) = f(0,0) :bahnhof:
Kommt irgendwie nicht dasselbe bei raus, ich hab auch schon ein paar andere Aufrufe versucht zu rechnen alle Möglichkeiten versucht irgendwie diese Werte auch so hinzukriegen aber es scheint als würde der Fehler woanders stecken. Ich hab das Programm auch schon am Rechner mal ausprobiert und die vorgegebenen Werte stimmen wirklich. Wie rechnet man das nun von Hand und müsste das Programm nicht abbrechen wenn ein return ohne f(x,y) kommt und warum bricht er bei 11 erst ab und nicht schon bei 2 da dort ja auch schon eine Bedingung ohne das "Rekursionsreturn" erfüllt ist. ???:L
Danke für die Hilfe
Rekursion von Hand durchführen
Categories: Rekursion von Hand durchführen
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire