Verständnis frage zu Rekursion



  • Ich habe hier ein kleines Programm das die fibonacci Zahl berechnet.
    Was mir da bei nich klar ist, ist der Rechen vorgang von:
    fibonacci(i-1) + fibonacci(i-2)
    😕

    #include <stdio.h>
    #include <limits.h>

    unsigned long fibonacci(unsigned int i) {
    if (i<2) {
    return i;
    }
    return fibonacci(i-1) + fibonacci(i-2);
    }

    int main(void) {
    unsigned int zahl;

    printf("Bitte eine positive ganze Zahl eingeben: ");
    scanf("%u", &zahl);
    printf("Die %u. Fibonaccizahl ist %lu\n",
    zahl, fibonacci(zahl));
    return 0;
    }

    Schon mal Danke für die Hilfe!



  • Fahni schrieb:

    Was mir da bei nich klar ist, ist der Rechen vorgang von:

    und was genau ist nicht klar? Die technische Umsetzung oder die mathematische Definition?



  • Aha TU GRaz 🙂 !



  • Die mathematische Definition oder besser gesagt wie da bei die einzelnen rechen schrite aus sehen.



  • Mathematische definition:
    fn = fn-1 + fn-2 n >= 2
    Wenn du Fibonacci-Folge in google eingibst findest so manches!



  • Funktionsweise:
    Fuer jede positive Zahl n > 1 wird die Summe der beiden kleineren n nach f(n)=f(n-1)+f(n-2) gebildet.
    Fuer diese wiederum die Summe,
    und wieder die Summe,
    und wieder,
    bis n<2: das Ergebnis ist bekannt.
    Somit kann die Summe fuer f(2)= f(1)+f(0) gebildet werden,
    daraus die Summe fuer f(3), ... f(n).



  • Ok sry mein Fehler!

    @Fahni
    ich würd mir die vorletzte VL-Präsentation von ESP anschauen da werden die einelnen Schritte eh genau gezeigt!!



  • hellihjb schrieb:

    if (i<2) { return i; }
    

    Ist nicht ganz richtig da hier fibonacci(0)=0 waere (siehe Fibonacci-Folge).

    das ist egal. alle folgen mit f(n)=f(n-1)+f(n-2) sind fibonacci-folgen. die startwerte sind frei. nicht vergessen, daß wikiblödia von privatleuten wie uns geschrieben wird und wir vergessen oft mal sachen.
    spricht man vereinfachend von "der" fibonacci-folge, ist meistens eine gemeint mit den startwerten f(0)=undef f(1)=1 f(2)=1 oder f(0)=0 f(1)=1. und vereinfachend fibonacci-zahlen meint deren glieder.



  • OK Danke!!
    Jetzt hab ichs verstande!


Log in to reply