Java:
public class Fibonacci{
public static int fib(int n){
// requires n >= 0
System.out.println("call fib(" + n + ")"); //Protokollierung
if (n==0) return 0;
if (n==1) return 1;
return (fib(n-1)+fib(n-2));
}
public static void main(String[] arg){
int n;
System.out.println("gib ganze Zahl >= 0:");
n = SavitchIn.readLineInt();
System.out.println("Ergebnis: fib(" + n + ") = "
+ fib(n)); //Aufruf
}
}
Also ich gebe die Zahl 4 ein!
dann wird oben das unterporgramm fib mit 4 durchlaufen und "call fib(4)" ausgegeben
dann kommt man zu der stelle return (fib(n-1)+fib(n-2));
hier wird das ganze dann mit 4-1 aufgerufen, also 3
es wird wieder call fib(3) ausgegeben (die stelle +fib(n-2)); wird gar nicht durchlaufen oder ???
dann eben ausgabe "call fib(3)"
"call fib(2)"
"call fib(1)"
dann wenn das ganze mit 1 durchaufen wird sollte doch mit "return 1" das programm abgebrochen werden oder ??
wenn ich debugge dann wird return 1 durchlaufen aber er springt nicht aus der methode raus??
also wird nochmal das durchgeführt... return (fib(n-1)+fib(n-2));
und wieso werden die zahlen dann wieder höher
wenn ich das programm ausführe kommt folgende ausgabe
wäre echt sehr nett mit einige tipps zu geben !
4
call fib(4)
call fib(3)
call fib(2)
call fib(1)
call fib(0)
call fib(1)
call fib(2)
call fib(1)
call fib(0)
Ergebnis: fib(4) = 3
Zuletzt bearbeitet von einem Moderator: