2016-04-05 2 views
1

Я видел несколько сообщений о генерации данной последовательности фибоначчи, например this one. Тем не менее, я не могу понять, как сгенерировать последовательность (вернуть массив) чисел фибоначчи для заданного n с использованием рекурсии. То, что у меня явно не работает, но я действительно не могу понять, как это сделать в противном случае.Как я могу рекурсивно генерировать массив последовательности Фибоначчи?

var fibArray = function(n) { 
    var f = []; 
    n < 2 ? f.push(n) : f.push(fibArray(n-1) + fibArray(n-2)); 
    return f; 
}; 
+4

Буквально первый результат поиска ~ [Как работает рекурсивная функция фибоначчи?] (Http://stackoverflow.com/questions/8845154/how-does-the-the-fibonacci-recursive-function-work) – Phil

+0

Это не тот же вопрос, он хотел вернуть массив – JordanHendrix

+2

@Phil не на 100% уверен, но это может быть преждевременное закрытие или неправильный дубликат – JordanHendrix

ответ

2

Обратите внимание, что вы запускаете каждый вызов функции с пустым массивом, а затем добавляете к нему только 1 элемент. Это не сработает.

Вы должны добавить новый элемент в массив, который был возвращен с предыдущего этапа fib(n - 1). Как так:

function fib (n) { 
    if (n < 2) { 
     return [1]; 
    } 
    if (n < 3) { 
     return [1, 1]; 
    } 

    var a = fib(n - 1); 
    a.push(a[n - 2] + a[n - 3]); 
    return a; 
}; 

nth номер на позиции n - 1 на массиве появляется. Это оправдывает n - 2 = n - 1 - 1 и n - 3 = n - 2 - 1.

+1

@Omarjmh Спасибо, что указали! Исправлена ​​:) – SlySherZ

 Смежные вопросы

  • Нет связанных вопросов^_^