Ala*_*anH 3 javascript arrays recursion fibonacci
我已经看到几个关于生成给定斐波那契序列的帖子,比如这个.但是,我无法弄清楚如何n使用递归生成给定给定的fibonnaci数的序列(返回数组).我明显没有用,但我真的无法弄清楚如何做到这一点.
var fibArray = function(n) {
var f = [];
n < 2 ? f.push(n) : f.push(fibArray(n-1) + fibArray(n-2));
return f;
};
Run Code Online (Sandbox Code Playgroud)
从上一个答案稍微修改的版本:
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))Run Code Online (Sandbox Code Playgroud)
请注意,您使用空数组启动每个函数调用,然后只添加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;
};
Run Code Online (Sandbox Code Playgroud)
该nth数字显示在n - 1阵列上的位置.这证明了n - 2 = n - 1 - 1和n - 3 = n - 2 - 1.