我怎样才能更改我的 reduce() 来求和数字,直到我得到要求的数字?
How can I change my reduce() to sum numbers until I get the number which was asked for?
我需要完成这些任务,所以我做了一个对斐波那契数列求和的函数。但是我需要求和,直到得到程序要求的数字。你能提出什么建议吗?请在必要时更正我的英语,并帮助我获得代码的答案。
sumFibs(1000) 应该 return 1785。
sumFibs(4000000) 应该 return 4613732。
sumFibs(75024) 应该 return 60696。
sumFibs(75025) 应该 return 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)
这是您最终想要的优化代码。
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));
如果您需要 reduce 函数,您应该在代码中多写几行。
这里是使用reduce函数的代码
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));
希望对您有所帮助,如有任何问题,请在下方评论!
谢谢
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;
}
我需要完成这些任务,所以我做了一个对斐波那契数列求和的函数。但是我需要求和,直到得到程序要求的数字。你能提出什么建议吗?请在必要时更正我的英语,并帮助我获得代码的答案。
sumFibs(1000) 应该 return 1785。 sumFibs(4000000) 应该 return 4613732。 sumFibs(75024) 应该 return 60696。 sumFibs(75025) 应该 return 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)
这是您最终想要的优化代码。
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));
如果您需要 reduce 函数,您应该在代码中多写几行。
这里是使用reduce函数的代码
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));
希望对您有所帮助,如有任何问题,请在下方评论! 谢谢
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;
}