Hi,
ich habe im Internet zufällig Quellcode zu einem Rekursionsprogramm gefunden.
Da ich nie damit etwas zu tun hatte, fällt mir das Nachvollziehen des Ergebnisses etwas schwer.
Hier der Quellcode:
Die Ausgabe ist folgende:
Wie man an der Ausgabe erkennen kann, setzt sich das Ergebnis eines jeden Durchlaufs, aus der Addition der letzten beiden Durchläufe zusammen.
Ich frage mich aber, weshalb z. B. bei n = 5 nicht solange iteriert wird, bis n entweder 1 oder 0 ist. Es scheint so, als ob z. B. bei n = 5, einfach einmal das Ergebnis des Durchlaufs von n = 4 genommen wird und einmal bei n = 3 und gut ist.
Die Sache ist eben die, dass bei der letzten Return-Anweisung dieselbe Funktion eben nochmals aufgerufen wird und das eben solange bis n entweder 1 oder 0 ist.
Irgendwie scheine ich auf dem Schlauch zu stehen! :bahnhof:
Liebe Grüße
Reality
ich habe im Internet zufällig Quellcode zu einem Rekursionsprogramm gefunden.
Da ich nie damit etwas zu tun hatte, fällt mir das Nachvollziehen des Ergebnisses etwas schwer.
Hier der Quellcode:
Code:
public class Fib {
public static int fib(int n) {
if (n == 0 || n == 1)
return n;
return (fib(n-1) + fib(n-2));
}
public static void main(String[] args) {
for (int i = 0; i < 36; i++)
System.out.println("n=" + i + " => " + fib(i));
}
}
Die Ausgabe ist folgende:
n=0 => 0
n=1 => 1
n=2 => 1
n=3 => 2
n=4 => 3
n=5 => 5
n=6 => 8
n=7 => 13
n=8 => 21
n=9 => 34
n=10 => 55
n=11 => 89
n=12 => 144
n=13 => 233
n=14 => 377
n=15 => 610
n=16 => 987
n=17 => 1597
n=18 => 2584
n=19 => 4181
n=20 => 6765
n=21 => 10946
n=22 => 17711
n=23 => 28657
n=24 => 46368
n=25 => 75025
n=26 => 121393
n=27 => 196418
n=28 => 317811
n=29 => 514229
n=30 => 832040
n=31 => 1346269
n=32 => 2178309
n=33 => 3524578
n=34 => 5702887
n=35 => 9227465
Wie man an der Ausgabe erkennen kann, setzt sich das Ergebnis eines jeden Durchlaufs, aus der Addition der letzten beiden Durchläufe zusammen.
Ich frage mich aber, weshalb z. B. bei n = 5 nicht solange iteriert wird, bis n entweder 1 oder 0 ist. Es scheint so, als ob z. B. bei n = 5, einfach einmal das Ergebnis des Durchlaufs von n = 4 genommen wird und einmal bei n = 3 und gut ist.
Die Sache ist eben die, dass bei der letzten Return-Anweisung dieselbe Funktion eben nochmals aufgerufen wird und das eben solange bis n entweder 1 oder 0 ist.
Irgendwie scheine ich auf dem Schlauch zu stehen! :bahnhof:
Liebe Grüße
Reality