Я пытаюсь найти последовательность фибра, используя рекурсию, но моя функция продолжает давать мне ошибку.Как получить последовательность фибоначчи с помощью рекурсии?
function y = r_nFib(seq, n)
y = zeros(1,n);
for m = 1:n
y(m) = r_nFib(m);
end
if seq == 0
y = [0 y];
else
y = [seq, seq, y];
function y = r_nFib(seq, n)
if n<3
y(1:n) = 1;
else
y(n) = r_nFib(n-2) + r_nFib(n-1);
end
y = y(n);
end
end
n - длина последовательности волокон, а seq - начальный номер. Если след равен 0, то это как последовательность собирается начать
y = [0 1 1 2 3 5 8] % first two number will be the 0 and 1
если след является любой вещью, отличной от 0, то
если сл = 2;
y = [2 2 4 6 10] % first two number will be the seq
Как исправить мою функцию, чтобы дать мне правильный ответ. Я никогда не использовал рекурсию, и я новичок в этом. Любая помощь могла бы быть полезна.
y = r_nFib(4,10)
y = [4 4 8 12 20 32 52 84 136 220];
спасибо.
Не помещайте локальные функции внутри главной функции; поместите его после «конца» основной функции. Он по-прежнему работает и не будет виден внешним абонентам. – Setsu
У меня по-прежнему появляется сообщение об ошибке с использованием r_nFib (строка 2) Недостаточно входных аргументов. Ошибка в r_nFib (строка 4) y (m) = r_nFib (m); –
Кстати, чтобы быть педантичным, последовательность Фибоначчи _defined_, чтобы иметь начальную пару либо '[0 1]', либо '[1 1]'; любые другие стартовые пары - это Фибоначчи, но не строго Фибоначчи. Различие важно, потому что у них разные свойства (см. [Lucas Number] (http://en.wikipedia.org/wiki/Lucas_number)) – Setsu