Date Редакция Категория sci Теги matlab

"В лоб"...

function F = fib1(n)
F(1) = 1;
F(2) = 1;
for i = 3:n
    F(i) = F(i-1)+F(i-2);
end

с предварительным выделением памяти, быстрее fib1

function F = fib2(n)
F = ones(1,n);
for i = 3:n
    F(i) = F(i-1)+F(i-2);
end

рекурсивный, медленный, но оригинальный

function F = fib3(n)
if n == 1,
    F = 1;
    return;
elseif n == 2
    F = [1 1];
else
    f = fib3(n-1); 
    F = [f f(end)+f(end-1)];
end

и самый быстрый, с использованием функции filter

function F = fib4(n)
x = [1 zeros(1,n-1)];
a = [1 -1 -1];
b = 1;
F = filter(b, a, x);


Комментарии

comments powered by Disqus