2017-10-13 12 views
-2

計算するmatlabにコードを書く必要があります the first 10 Fibonacci numbers しかし、私はこの問題を抱えています。私はここで定義された式を使用して考える:最初の10個のフィボナッチ数を計算する

https://www.math.hmc.edu/funfacts/ffiles/10002.4-5.shtml

そして私は、この今のところ

n = 0; 
c = (((1+sqrt(5))/2)^n -((1-sqrt(5))/2)^2)/(sqrt(5)); 
while (n < 10) 
disp(c) 
n+1; 
end 

を得ている。しかし、あなたはおそらく見ることができるように、それは非常に間違っていると不完全です。しかし、私は何をすべきか分からない。教授は私たちに適切なコードを書くことを望んでいます。つまり、フィボナッチ(n)のようなものを使うことはできません。どんな助けも分かるでしょう:)

答えて

0
fib_series = [0,1]; 
i = 3; 
while length(fib_series) < 10 
    fib_series(i) = fib_series(i-1) + fib(i-2); 
    i = i+1; 
end 
0

golden ratioのように、フィボナッチシリーズのように見えます。詳細はhereです。

これは、このMATLAB File-exchange codeで使用されたと私は、ここではそれだけのesssenceを書いています -

sqrt5 = sqrt(5); 
alpha = (1 + sqrt5)/2; %// alpha = 1.618... is the golden ratio 
fibs = round(alpha.^n ./ sqrt5) 

あなたはFibonacci Seriesnth数のnに整数を養うか、持っている配列1:nを養うことができますシリーズ全体。

このメソッドは、n = 69まで有効です。

1

フィボナッチ数は次のように定義されたものを覚えている:あなたは計算かつてのようにあなたの数式は、配列を使用して(ただ、定数として最初の2を設定し、他を計算する最初の10を計算するために大規模な過剰です

fib(n) = fib(n-1) + fib(n-2); 

あなたが知っていることを使ってそれから4番目を計算することができます)。

私はあなたが彼は再帰的な目的球を使用することを望んでいないと述べた

let fib = [0,1,-1,-1...] 
function Fibonacci(n){ 
    if (fib[n] != -1) return fib[n] // If it exists already, we have it! 
    // otherwise, we can calculate it 
    // make sure to save the result so we can use it later if needed. 
    fib[n] = Fibonacci(n-1) + Fibonacci(n-2); 
    return fib[n]; 
} 
+0

てMATLABに超えるアイデアを翻訳することができるはず、それを計算再帰ためのいくつかの擬似コードを残しておきます –

+1

質問には、組み込み関数だけでは使えないと言われています。 – Imme

関連する問題