Fibonacci Zahlen

Alpinwhite

Aktives Mitglied
Hallo ich bitte um kurze Erklärung zur Berechnung von Fibonacci Zahlen. Sie wird folgendermaßen berechnet:
Fib(n) = Fib(n - 1) + Fib(n - 2)
Nach der Fibonacci Tabelle Also z.B. 13=8+5. Das leuchtet ein.
Aber das folgende Programm gibt von einer Eingabe. z.B. 10, die Fibonacci Zahl 55 aus, was demnach die 10. Stelle ist.
Allerdings werde ich aus dem Algorithmuss noch nicht ganz schlau, stimmt die Berechnung so, wenn ich für z.B. n=10 rechne:
(10-1)+(10-2) + (9-1)+(8-2)+(8-1)+(6-2)+(7-1)+(4-2)+(6-1)+(2-2) = 55

Also ist das das, was das Programm macht?
??????

Fibonacci Tabelle:

0
1
1
2
3
5
8
13
21
34
55

Java:
public class FibonacciRec {

    public static void main(String[] args) {

        System.out.print("Geben Sie eine Zahl ein: ");
        int n = Input.readInt();
        // Einlesevorgang wiederholen, bis gültige Eingabe
        while (n < 1){
            System.out.println("Die Zahl muss größer oder gleich 1 sein!");
            n = Input.readInt();
        }

        System.out.println("Die Fibonacci Zahl von "+ n + " ist: "+calcFib(n));  
    }

    // Ermittlung der Fibonaccizahl lt. Vorschrift
    public static int calcFib (int n) {

        if (n<0) {            // Abfangen von ungültiger Eingabe (Rückgabewert -1)
            return -1;
        }
        if (n==0) {            // Rekursionsanker
            return 0;
        } else if (n==1) {    // Rekursionsanker
            return 1;
        } else {
            return calcFib (n-1) + calcFib (n-2);
        }
    }  
}
 

Zurück
Oben