这很好用:

function fibonacci(n) {
  if (n <= 1) {
    return n;
  } else {
    return fibonacci(n - 1) + fibonacci(n - 2);
  }
}
console.log('fibonacci ' + fibonacci(7));


但是如果我用(n == 1)或(n == 0)甚至是(n === 1)替换基数。我得到一个RangeError。有人可以解释为什么吗?有趣的是,它可以与简单的sum函数一起使用:

function sumTo(n) {
 if (n == 1) {
  return n;
 } else {
  return n + sumTo2(n - 1);
 }
}

最佳答案

您需要同时检查n === 1 || n === 0,因为您使用两个值n - 1n - 2进行呼叫。



function fibonacci(n) {
  if (n === 1 || n === 0) {
    return n;
  } else {
    return fibonacci(n - 1) + fibonacci(n - 2);
  }
}
console.log('fibonacci ' + fibonacci(7));

关于javascript - JavaScript fibonacci-RangeError:当基数(n == 1)或(n == 0)时,但如果(n <=)则不然。为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52475078/

10-09 16:08