Если вы хотите получить 8
для fib1(6)
, это означает, что вам нужно начать последовательность Фибоначчи с n=1
. Однако ваш код указывает, что вы начинаете с n=0
. В этом случае вы должны использовать n <=2
в своем выражении if-else
, то есть
function f = fib1(n)
if n <= 2
f = 1;
else
f = fib1(n-1) + fib1(n-2);
end
end
, так что
>> fib1(6)
ans = 8
Если вы не хотите использовать любой рекурсии, вы можете попробовать код ниже
function f = fib2(n)
f = (((1+sqrt(5))/2)^n - ((1-sqrt(5))/2)^n)/sqrt(5);
end
, который дает
>> fib2(6)
ans = 8