Matlab: Как рекурсивно получить N-й элемент в последовательности Фибоначчи без циклов или встроенных функций - PullRequest
1 голос
/ 12 апреля 2020

Я пытаюсь написать рекурсивный код, который принимает входные данные n и выводит n-й член последовательности Фибоначчи, без использования каких-либо циклов или каких-либо встроенных функций MATLABS.

для примера:

fibo(6)

ans = 8

У меня проблемы с рекурсивным написанием кода, и я был бы очень признателен за помощь.

с al oop Я написал:

function f = fib1(n)
    if n <= 1
        f = 1;
    else
        f = fib1(n-1) + fib1(n-2);
    end
end

1 Ответ

2 голосов
/ 12 апреля 2020

Если вы хотите получить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...