этот код работает, но я не совсем понимаю, почему.
если я удалю внутренний оператор return и оставлю только тот, который находится в конце, он вернет правильную сумму (44) для console.log(evenFibonnacisSum(100))
, но не определено для console.log(evenFibonnacisSum(4000000))
.
, если я удалю внешний оператор return и сохраню его внутри оператора if, он вернет undefined для console.log(evenFibonnacisSum(100))
, но верную сумму (46000000 или около того) для console.log(evenFibonnacisSum(4000000))
.
function evenFibonnacisSum(upperlimit){
let evenSum = 0
let seq = [0, 1]
for(i=0; i<=upperlimit; i++) {
if(evenSum<upperlimit) {
let next = seq[i]+seq[i+1];
seq.push(next)
if(seq[i]%2 === 0 && seq[i]<upperlimit) {
evenSum += seq[i]
}
} else {
return evenSum
}
}
return evenSum
}
console.log(evenFibonnacisSum(100))
console.log(evenFibonnacisSum(4000000))
это не большая проблема, но это действительно не интуитивно понятно. Кто-нибудь знает, почему это может быть?