PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fibionacci Zahlen Rekursiv Call by reference in C



DELAC
06-01-2011, 10:53
Hi!
Wollte hier die Fibionacci Zahlen call by reference rekursiv implementieren.
Wo ist denn der Fehler in Zeile 5?

0 int fib (int *n)
1 {
2 if( *n <=1)
3 return *n;
4 else
5 return fib (*(n)-1) + fib (*(n)-2);
6 }

sommerfee
06-01-2011, 12:52
Wollte hier die Fibionacci Zahlen call by reference rekursiv implementieren.

Wozu call by reference?


Wo ist denn der Fehler in Zeile 5?

"Call by reference" heißt in C, daß man die Adresse einer Variablen übergibt, mit Hilfe des Adressoperators &.

Du müsstest also sowohl *n-1 als auch *n-2 erstmal in Hilfsvariablen speichern, deren Adresse du dann mittels & übergeben kannst, also etwa:



int a = *n - 1;
int b = *n - 2;
return fib (&a) + fib (&b);


Liebe Grüße,
Axel

DELAC
06-01-2011, 13:52
Hi!
Danke für die Lösung.
Die Funktion mithilfe von Call by reference wollte ich nur zur Übung machen.