Fibonacci Rekursiv C#
Hallo habe folgendes Problem, versuche gerade C# zu lernen. Ich habe mir als Programm Fibonacci zahlen rekursiv zu Programmiern. Das haut allerdings nicht so wirklich hin. Iterativ ist es kein Problem. könnt ihr mir vlt helfen? Danke

2 Antworten
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.
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
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
Statt a == n muss es natürlich n == 2 heißen ...