如何递归生成斐波那契数列数组?
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 - 1
和 n - 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]))
我看过几篇关于生成给定斐波那契数列的帖子,例如 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 - 1
和 n - 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]))