所有奇数斐波纳契数之和

问题描述 投票:0回答:1

我只是一个初学者。我写了一个代码,我只是想问问是否有更好的方法编写或缩短代码。我只想学习。

给出一个正整数,返回小于或等于num的所有“奇数”斐波那契数的和。

例如,sumFibs(10)应该返回10,因为所有小于或等于10的奇数斐波那契数都是1、1、3和5。

这是我的代码:

function sumFibs(num) {
  let lastNum = 0;
  let firsNum = 1;
  let fibonacciAnswer = 0;
  let fibonacciArray = [];
  let result = 0;
  for (;fibonacciAnswer <= num;) {
    fibonacciArray.push(firsNum);
    fibonacciAnswer = lastNum + firsNum;
    lastNum = firsNum;
    firsNum = fibonacciAnswer;
  }
  for (let i = 0; i <= fibonacciArray.length - 1; i++) {
    if (!(fibonacciArray[i] % 2 == 0)) {
      result += fibonacciArray[i];
    }
  }
  return result;
}
javascript fibonacci
1个回答
-1
投票

解决方案

function sumFibs(num) {
  var prevNumber = 0;
  var currNumber = 1;
  var result = 0;
  while (currNumber <= num) {
    if (currNumber % 2 !== 0) {
      result += currNumber;
    }

    currNumber += prevNumber;
    prevNumber = currNumber - prevNumber;
  }

  return result;
}
// test here
sumFibs(4);

代码说明

  • 创建一个变量以记录当前和先前的数字以及将返回的结果。
  • 使用while循环以确保我们不会超过作为参数给出的数字。
  • 我们使用模操作数来检查当前数字是奇数还是偶数。如果很奇怪,请将其添加到结果中。
  • 通过旋转获取下一个数字并在其后交换值来完成斐波那契圆。
  • 返回结果。

来源:https://www.freecodecamp.org/forum/t/freecodecamp-challenge-guide-sum-all-odd-fibonacci-numbers/16084

© www.soinside.com 2019 - 2024. All rights reserved.