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