用数组作为输入参数实现斐波那契

时间:2019-04-29 23:51:18

标签: javascript fibonacci

任务内容: fib()函数用于为斐波那契序列实现形式公式。输入参数是完成函数后在数组中返回的单词数。该功能应检查输入数据的正确性。

我已经实现了如下所示的斐波那契,但是不知道如何使输入参数成为同一函数返回的数字量。当我尝试使用递归函数时根本不起作用(给出了null或未定义的结果)。另外,函数总是为我返回一个数字(n),那么它如何成为数组?

function fib(n) {


  if (n <= 1) {
    return n;
  } else {
    n = (n - 2) + (n - 1);
    return n
  }
}



console.log(fib(8))

1 个答案:

答案 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));