如何递归生成斐波那契数列数组?

How can I recursively generate an Array of the Fibonacci sequence?

我看过几篇关于生成给定斐波那契数列的帖子,例如 this one。但是,我不知道如何使用递归为给定的 n 生成斐波那契数列(return 数组)。我所拥有的显然不起作用,但我真的不知道该怎么做。

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

请注意,您使用空数组开始每个函数调用,然后只向其中添加 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 - 1n - 3 = n - 2 - 1.

是合理的

上一个答案的略微修改版本:

function fib(n) {
  if (n == 0) return [0]
  if (n == 1) return [0, 1]
  const arr = fib(n - 1)
  return [...arr, arr[n-1] + arr[n-2]]
}

console.log(fib(15))

这是一个没有扩展运算符的选项,并且有一个选项可以在您需要时启动序列:

function fibonacciRecursion(amountNumbers = 4, sequence = [0, 1]) {
    if (amountNumbers > 0) {
        sequence.push(sequence[sequence.length - 1] + sequence[sequence.length - 2]);
        return fibonacciRecursion(amountNumbers - 1, sequence);
    }
    return sequence
}
    
console.log(fibonacciRecursion(10, [3,5]))