天天看點

matlab 求 fibbonacci 數列的三種方法

1.遞歸。

在n比較大(〉30)的情況下,計算會很慢。因為它有大量的兀餘計算,不贅述。

function x = fibbo3(n)
if n < 3
    x = 1;
else
    x = fibbo3(n-1) + fibbo3(n-2);
end;
    
           

2.輾轉相加法。

function [ x ] = fibbo( n )
if n < 1
   error('n should >= 1');
end;
a = 1;
b = 1;
for i = 1 : n
    c = a + b;
    a = b;
    b = c;    
end;
x = c;
           

3.建立數組法。需要儲存數組。

function x = fibbo2 (n)
F = [1 1];
helper(n);
x = F(n);
F
function helper(n)
if numel(F) < n
    helper(n-1)
    F(n) = F(n-1) + F(n-2);
    
end
end
end