简体   繁体   English

如何将我的 reduce() 更改为求和数字,直到我得到要求的数字?

[英]How can I change my reduce() to sum numbers until I get the number which was asked for?

https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/sum-all-odd-fibonacci-numbers https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/intermediate-algorithm-scripting/sum-all-odd-fibonacci-numbers

I need to complete theses task, so I have made a function to sum Fibonacci series.我需要完成这些任务,所以我制作了一个 function 来总结斐波那契数列。 But I need to sum until I get the number which is asked for by the program.但我需要求和,直到我得到程序要求的数字。 Can you make any suggestions?你能提出任何建议吗? Please, correct my english if it is necessary and help me to get the answer for my code.如果有必要,请更正我的英语并帮助我获得代码的答案。

sumFibs(1000) should return 1785. sumFibs(4000000) should return 4613732. sumFibs(75024) should return 60696. sumFibs(75025) should return 135721. sumFibs(1000) 应返回 1785。 sumFibs(4000000) 应返回 4613732。 sumFibs(75024) 应返回 60696。 sumFibs(75025) 应返回 135721。

function sumFibs(num) {

let numArr=[];

for(let i=0;i<=num;i++){

   numArr.push(i)

   }  
console.log()
let oddNumArr=numArr.filter(numbers=>numbers % 2 !== 0) 

oddNumArr.unshift(1)

let reducedArr=oddNumArr.reduce((a, b) => a + b, 0)

return reducedArr;
console.log(reducedArr)

Here is the optimized code that you want finally.这是您最终想要的优化代码。

 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));

If you are in need of reduce function, you should go through a little bit more lines down in your code.如果你需要减少function,你应该在你的代码中通过更多的行来减少 go。

Here is the code that uses reduce function这是使用减少function 的代码

 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));

Hopefully, this would be helpful, please comment down below if you have any questions.希望对您有所帮助,如果您有任何问题,请在下方评论。 Thanks.谢谢。

function sumFibs(num) {



let  numArr = [1, 1];

for(let i=0;num>=numArr[numArr.length-1];i++){

let y=numArr[0+i] +numArr[1+i]

numArr.push(y) 

}

 console.log(numArr)

 let oddNumArr=numArr.filter(numbers=>numbers % 2 !== 0) 
   let lessThanNumArr=oddNumArr.filter(n=>n<=num)  
console.log(oddNumArr)

let reducedArr=lessThanNumArr.reduce((a, b) => a + b, 0)

console.log(reducedArr)

return reducedArr;

}

sumFibs(75025);
function Fibs(item){

  if (item==0 || item==1){
    return 1;
  }
  else{
    return Fibs(item-1)+Fibs(item-2);
  }

}

function sumFibs(num) {

  let item = 0;
  let sum = 0;

  while (Fibs(item)<=num){

    if (Fibs(item)%2 > 0){
      sum = sum + Fibs(item);
    }
    item++;
  }

  
  return sum;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM