Rekursive Funktion zum erzeugen / drucken eines Fibonacci-Reihe

Ich versuche, erstellen Sie eine rekursive Funktion aufrufen, Methode, der wäre drucken die Fibonacci-bis zu einem bestimmten Ort:

1 function f = fibonacci(n)
2 fprintf('The value is %d\n', n)
3 if (n==1)
4     f(1) = 1;
5     return;
6 elseif (n == 2)
7     f(2) = 2;
8 else
9     f(n) = fibonacci(n-1) + fibonacci(n-2);   
10 end
11 end

Gemäß meinem Verständnis der fibonacci-Funktion rekursiv aufgerufen, bis der Wert von argument n übergeben werden, ist 1. Dann ist die Funktion Stapel würde rollback entsprechend. Also, wenn ich diese Funktion aufrufen aus dem Befehl:

>> fibonacci(4)

Ist der Wert von n ist 4, also Linie 9 führen wie:

9 f(4) = fibonacci(3) + fibonacci(2);

Jetzt glaube ich, dass das erste fibonacci(3) genannt werden würde - daher wieder für fibonacci(3)

9 if(3) = fibonacci(2) + fibonacci(1);

Ifs in Linie 3 und 6 aufpassen würde.

Aber jetzt, wie fibonacci(2) + fibonacci(1) - Anweisung würde sich ändern:

 if(3) = 2 + 1;

Erhalte ich die folgende Fehlermeldung und kann nicht Debuggen weiter, es zu lösen:

>> fibonacci(4)
The value is 4
The value is 3
The value is 2
The value is 1
In an assignment  A(I) = B, the number of elements in B and I must be the same.

Error in fibonacci (line 9)
    f(n) = fibonacci(n-1) + fibonacci(n-2);

Error in fibonacci (line 9)
    f(n) = fibonacci(n-1) + fibonacci(n-2);

Bitte geben Sie einige Einblicke für die Lösung und mit welchen parameter würden die fibonacci-Funktion rekursiv aufgerufen, an der Linie Nummer 9, erste und damit.

Ex Für n = 4

f(n) = fibonacci(3) + fibonacci(2);

So wird der MATLAB-Aufruf fibonacci(3) fibonacci(2) der erste?

Sollte nicht der code sein, einige Sache wie folgt:

1 function f = fibonacci(n)
2 fprintf('The valus is %d\n', n)
3 if (n==1)
4     f(1) = 1;
5     return f(1);
6 elseif (n == 2)
7     f(2) = 2;
8    return f(2);
9 else
10   f(n) = fibonacci(n-1) + fibonacci(n-2);   
11 end
12 end

fibonacci(4)
Fehler: Datei: fibonacci.m-Linie: 5 Spalte: 12
Unexpected MATLAB expression.

Warum return-Ausdruck in einer Funktion ist, wodurch ein Fehler?

Ich bin kein Experte in MATLAB, aber auf der Suche hier mathworks.com/help/matlab/ref/return.html es sagt, dass die Rückgabe erfolgt ist, in Ihrem Fall, wie f = 1 und nicht f(1)=1? Ich könnte falsch sein.
Dann welchen Wert wird die recursed Funktion zurück, in unserem Fall " f(4) = fibonacci(3) + fibonacci(2);' ergeben würden, was nach dem return-Anweisung Ausführung
Ich glaube, Sie brauchen, um Bearbeiten "return f(1);" und "return f(2);" "return;".
Immer noch der gleiche Fehler, wenn ich die Stelle als pro @Divakar
Ich denke, dass Sie ändern müssen f(1)=1; zu f=1; und f(2)=2 zu f=2, und auch return f(1) und return f(2) zu return. Schließlich f(n) = ... zu f=...;

InformationsquelleAutor Programmer | 2014-03-06

Schreibe einen Kommentar