如何在JavaScript中获得所有奇数斐波那契值的总和

如何在JavaScript中获得所有奇数斐波那契值的总和

本文介绍了如何在JavaScript中获得所有奇数斐波那契值的总和?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在通过此免费代码训练演习.

这是我到目前为止所拥有的...

And here is what I have so far...

有什么建议吗?

function sumFibs(num) {
    var arr, isFibVal, isEvenVal, sum, i = 0, fibonacci = function (num){
      var a, b, result, fibArr = [1];
        a=0;
        b=1;
        result=b;

        for(var j = 0; j < num; j++){
            result = a + b;
            a = b;
            b = result;
            fibArr.push(result);

       }
      return fibArr;
    },

     isFib = function (val){
     var prev = 0;
     var curr = 1;
     while(prev<=val){
       if(prev == val){
         return true;
       } else {
         return false;
       }
       curr = prev + curr;
       prev = curr - prev;
     }
    },

   isEven = function(someNumber){
         return (someNumber % 2 === 0) ? true : false;
   };

    function sumArray(array) {
      for (
        var
          index = 0,              // The iterator
          length = array.length,  // Cache the array length
          sum = 0;                // The total amount
          index < length;         // The "for"-loop condition
          sum += array[index++]   // Add number on each iteration
      );
      return sum;
    }


      arr = fibonacci(num);
      isFibVal = isFib(num);
      isEvenVal = isEven(num);


    if (isFibVal && !isEvenVal){
        sum  += sumArray(arr);  
}
   return sum;
}

我得到的只是undefined,这似乎很奇怪,因为我认为我的代码的这一部分非常酷-使用函数值检查if语句中的vs.

All I get back is undefined which seems to be weird because i thought this part of my code was pretty cool—using the function values to check vs. in the if statement.

  arr = fibonacci(num);
          isFibVal = isFib(num);
          isEvenVal = isEven(num);


    if (isFibVal && !isEvenVal){
        sum  += sumArray(arr);  
}

推荐答案

这是我的解决方案,我发现它很可读:

heres my solution, and i find it to be pretty readable:

function sumOddFibs(num) {
  // initialize with 2 because 
  // fib sequence starts with 1 and 1
  var sum = 2;

  var prev = 1;
  var curr = 1;
  var next = 2;

  while (next <= num) {
    prev = curr;
    curr = next;
    next = prev + curr;

    if (curr % 2 !== 0) {
      sum += curr;
    }
  }
  return sum;
}

这篇关于如何在JavaScript中获得所有奇数斐波那契值的总和?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-19 05:11