Fibonacci Rekursiv C#

Fibonacci rekursiv - (programmieren, Informatik)

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
public int Fibo(int n){
    if(n == 1 || a == n){
        return n;
    }
    return Fibo(n-1)+Fibo(n-2);
}

Ahh ok danke. Mein Problem war, dass ich die Anweisung "fibo" als variable deklariert habe.

0
@N3wR3XX0n

A) Du hast das Semikolon bei der Rückgabe von n vergessen B) Du hast das System der Rekursion nivht ganz verstanden, du musst natürlich auch etwas zurückgeben, damit rückwärts wieder eingesetzt werden jann, wenn der Basis fall eintritt

0

Statt a == n muss es natürlich n == 2 heißen ...

0

du speicherst den wert nicht ... du führst nur die Berechnung aus ... und du returnst nich in jedem fall

Mh, noch ein Kandidat für einen Rekursions Auffrischkurs ... Sinn der Rekursion ist, dass der Wert (im Baisfall) am Ende wieder zurückläuft (lat. recurrere). Der Code wurde wohl schlecht aus dem Internet/Buch übernommen, denn die Methode sollte in diesem Fall "fibonacci" heißen (die soll sich ja wieder aufrufen), eine Variable braucht man hier doch gar nicht (außer man will den Wert nachher speichern) ?

Eine rekursive Funktion so in den Button Listener zu packen macht schlichtweg keinen Sinn . Damit alle Beteiligten die Fehler nachvollziehen können :

  • Alle wollen hier wohl das fehlende Semikolon (;) übersehen
  • es muss "return Fibo(n-1)+Fibo(n-2);" heißen, wir wollen ja schließlich eine kaskaden Rekursion haben und der Wert soll am Ende ja wieder zurückgereicht werden ;)
  • Die fibonacci Methode sollte von dem Listener gekapselt werden : Wenn man sonst (wie oben) Rekursion anwenden würde, würde man die Button Funktion ja immer wieder neu Aufrufen. Richtig wäre es, wenn man einfach einen Funktionsaufruf von fibonacci ( fibonacci(5) oder so) in den Listener packt.

Damit das System hinter einer Rekursion von allen verstanden wird, hier ein Beispiel :

fibonacci(3)  = fibonacci(2) + fibonacci (1)                
fibonacci(2)  = fibonacci(1) + fibonacci(0)     
fibonacci(1)  = 1       
fibonacci(0)  = 0           

fibonacci(2)  = 1 + 0 = 1   
fibonacci(3)  = 1 + 1 = 2       
=>fibonacci(3)= 2       

Da die Fibonacci Folge 0 1 1 2 3 5 8 ... geht,  
sollte das Ergebnis stimmen 
0

Poste mal dein Code hier, dann kann ich dir weiterhelfen.

wäre ja doof, dir hier die Lösung zu Posten, dann lernst ja nix dabei. ;-)

0

Hmm hatte eigentlich n Screenshot beigepackt. Ka warum der net da ist vlt weil es n png war. Trotzdem danke :)

0

Was möchtest Du wissen?