这个问题在这里已有答案:
任务内容:fib()函数用于实现Fibonacci序列的形式公式。输入参数是完成该功能后数组中返回的字数。该函数应检查输入数据的正确性。
我已经实现了如下的fibonacci,但不知道如何使输入参数从同一函数返回的数量。当我尝试使用并发功能时根本不起作用(给出null或未定义的结果)。此外,函数总是为我返回一个数字(n),那么它如何成为一个数组?
function fib(n) {
if (n <= 1) {
return n;
} else {
n = (n - 2) + (n - 1);
return n
}
}
console.log(fib(8))
如果你想输入单独的数字inputs.map(c=> fib(c));
您可以使用var arr = Array.from({length: 10}, (v, k) => fib(k));
创建序列fib数的数组。
或者像这样使用循环
function fib(n) {
if (n <= 1) {
return n;
} else {
n = fib(n - 2) + fib(n - 1);
return n
}
}
// if you want to get sequence fib
var arr = Array.from({length: 10}, (v, k) => fib(k));
console.log(arr)
// use map if you input separate number
console.log('use map');
var inputs = [1, 4, 5, 8];
var outputs = inputs.map(c=> fib(c));
console.log(outputs)
// use for loop
var outputloops = [];
console.log('use for loop');
for(i =0; i< inputs.length; i++){
outputloops.push(fib(inputs[i]));
}
console.log(outputloops);
function fibwitharray(arr) {
var outputloops = [];
for(i =0; i< inputs.length; i++){
outputloops.push(fib(inputs[i]));
}
return outputloops;
}
function fib(n) {
if (n <= 1) {
return n;
} else {
n = fib(n - 2) + fib(n - 1);
return n
}
}
// if you want to get sequence fib
var arr = Array.from({length: 10}, (v, k) => fib(k));
console.log(arr)
// use map if you input separate number
console.log('use map');
var inputs = [1, 4, 5, 8];
var outputs = inputs.map(c=> fib(c));
console.log(outputs)
// use for loop
var outputloops = [];
console.log('use for loop');
for(i =0; i< inputs.length; i++){
outputloops.push(fib(inputs[i]));
}
console.log(outputloops);
And this is exact your requirement
function fib(n) {
const result = [0, 1];
for (var i = 2; i < n; i++) {
result.push(result[i-2] + result[i-1]);
}
return result; // or result[n-1] if you want to get the nth term
}
console.log(fib(8));