Вот оптимизированный код, который вы хотите, наконец.
function sumFibs(num) {
let m = 0;
let n = 1;
let count = 0;
while (n < num) {
[n, m] = [n+m, n];
if (m%2 !== 0) {
count+=m;
}
}
return count;
}
console.log(sumFibs(1000));
console.log(sumFibs(4000000));
console.log(sumFibs(75024));
console.log(sumFibs(75025));
Если вам нужна функция уменьшения , вы должны go пропустить чуть больше строк кода.
Вот код, который использует уменьшение функция
function sumFibs(num) {
let lastFib=0;
let fibonacci=[0,1];
let i=0;
while(lastFib<num){
lastFib=fibonacci[i]+fibonacci[i+1];
fibonacci.push(lastFib);
i++;
}
fibonacci.pop();
return fibonacci.filter(x=>x%2!==0).reduce((a,b)=>a+b);
}
console.log(sumFibs(1000));
console.log(sumFibs(4000000));
console.log(sumFibs(75024));
console.log(sumFibs(75025));
Надеюсь, это будет полезно, пожалуйста, прокомментируйте ниже, если у вас есть какие-либо вопросы! Спасибо.