我只是一个初学者。我写了一个代码,我只是想问问是否有更好的方法编写或缩短代码。我只想学习。
给出一个正整数,返回小于或等于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;
}
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);