任务内容: fib()函数用于为斐波那契序列实现形式公式。输入参数是完成函数后在数组中返回的单词数。该功能应检查输入数据的正确性。
我已经实现了如下所示的斐波那契,但是不知道如何使输入参数成为同一函数返回的数字量。当我尝试使用递归函数时根本不起作用(给出了null或未定义的结果)。另外,函数总是为我返回一个数字(n),那么它如何成为数组?
function fib(n) {
if (n <= 1) {
return n;
} else {
n = (n - 2) + (n - 1);
return n
}
}
console.log(fib(8))
答案 0 :(得分:0)
如果您要输入单独的数字inputs.map(c=> fib(c));
您可以使用var arr = Array.from({length: 10}, (v, k) => fib(k));
创建序列fib编号的数组。
或使用for循环
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));