为什么奇数斐波那契数的总和会得出不正确的结果?

时间:2017-08-26 01:00:01

标签: javascript algorithm fibonacci

Q值。给定正整数num,返回小于或等于num的所有奇数斐波那契数的总和。

我的解决方案。



function sumFiboOdds(num) {
  var fib = [0, 1];

  function searchFibo(i, limit) {
    if (i > limit) {
      return;
    }
    fib[i] = fib[i - 2] + fib[i - 1];
    searchFibo(i + 1, limit);
  }

  searchFibo(2, num);
  return fib;
}

var res = sumFiboOdds(1000); //"num"

var sum = 0;
for (var i = 1; i < res.length; i++) {
  if (res[i] % 2 !== 0) {
    sum += res[i];
  }
}

console.log(sum); //answer is 11708364174233842, should be 1785!!
&#13;
&#13;
&#13;

有任何线索吗?也许是星期五,但我没有得到它?!!

1 个答案:

答案 0 :(得分:1)

问题是你收集了前1000个斐波那契数字而不是只有1000个数字。

function sumFiboOdds(limit) {
  var fib = [0,1];

  function searchFibo(i) {
    var next = fib[i-2]+fib[i-1];
    if(next > limit) {
      return;
    }
    fib[i]=next;
    searchFibo(i+1);
  }

  searchFibo(2);
  return fib;
}

var res = sumFiboOdds(1000);

var sum = res.reduce((s, n) => s + (n%2!==0 ? n : 0), 0);

console.log(sum);