Sum All Odd Fibonacci Numbers

给一个正整数num,返回小于或等于num的斐波纳契奇数之和。

斐波纳契数列中的前几个数字是 1、1、2、3、5 和 8,随后的每一个数字都是前两个数字之和。

例如,sumFibs(4)应该返回 5,因为斐波纳契数列中所有小于4的奇数是 1、1、3。

首先是找出所有小于num的斐波那契数列,然后计算数列中的奇数之和。算法实现如下:

function sumFibs(num) {
  var fib  = [1,1];
  var arr = [];
  var sum=0;
  var i=2;
  if(num<0) return false;
  while(fib[fib.length-1]<=num){
    fib[i] = fib[i-2]+fib[i-1];
    i++;
  }
  fib.pop();  //循环结束后fib数组多出一项,所以要pop一下
  arr = fib.filter(function(val){return val%2===1;});
  sum = arr.reduce(function(acc,cur){return acc+cur;},0);
  return sum;
}
原文地址:https://www.cnblogs.com/renbo/p/6730854.html