Javascript 尝试使用reducer函数将一个数组中的所有值添加到JS中的另一个数组中
编辑:我发现了一个问题:我没有解释3和5的倍数何时匹配!有没有关于如何消除重复数字的提示 我试图解决自由代码阵营的第一个Euler问题:3和5的倍数 问题在于:在提供的参数值编号下找到所有3或5的倍数之和 当我查看我的代码时,它适用于10的情况,但不适用于其他任何情况。我已经看了,尝试了另一种选择,但找不到问题。这就是我所做的 我的思考过程和当前任务的执行情况Javascript 尝试使用reducer函数将一个数组中的所有值添加到JS中的另一个数组中,javascript,algorithm,Javascript,Algorithm,编辑:我发现了一个问题:我没有解释3和5的倍数何时匹配!有没有关于如何消除重复数字的提示 我试图解决自由代码阵营的第一个Euler问题:3和5的倍数 问题在于:在提供的参数值编号下找到所有3或5的倍数之和 当我查看我的代码时,它适用于10的情况,但不适用于其他任何情况。我已经看了,尝试了另一种选择,但找不到问题。这就是我所做的 我的思考过程和当前任务的执行情况 创建一个循环,列出参数编号之前的所有编号 制作了两个while循环,一个用于3的倍数,一个用于5的倍数 在每个while循环中,我希望不
函数倍数f3和5(num){
总数=[];
设3s=0;
设五=0;
常数减速机=(累加器,电流值)=>累加器+电流值;
for(设i=1;i三加三){
//共推(三次);
3s+=3;
总推力(三个)
}
而(数值>五加五){
//共推(五次);
五个+=5;
总推力(五)
}
}
总计=总计。减少(减速机);
返回总数;
}
控制台日志(多个3和5(10))
控制台日志(多个3和5(49))
log(multiplesof3和5(1000))
您当前的解决方案可以通过消除两个阵列(存储倍数的阵列)中的重复项来修复。然而,这仍然是一个非常迂回的方式来实现你想要的。从你的问题陈述中,我不明白为什么你需要存储倍数,然后按照你选择的方式求和
由于无论如何都要循环处理1和参数之间的所有整数,因此只要遇到它们,就可以将它们添加到总和中:
let sum = 0
for (let i = 1; i < num; i++) {
if (i % 3 == 0 || i % 5 == 0) {
sum += i
}
}
let sum=0
for(设i=1;i
也就是说,除非您有一个特殊的原因选择以这种方式解决问题,您没有说明。您当前的解决方案可以通过消除两个阵列(存储倍数的阵列)中的重复项来修复。然而,这仍然是一个非常迂回的方式来实现你想要的。从你的问题陈述中,我不明白为什么你需要存储倍数,然后按照你选择的方式求和 由于无论如何都要循环处理1和参数之间的所有整数,因此只要遇到它们,就可以将它们添加到总和中:
let sum = 0
for (let i = 1; i < num; i++) {
if (i % 3 == 0 || i % 5 == 0) {
sum += i
}
}
let sum=0
for(设i=1;i
也就是说,除非你有一个特殊的原因,为什么你选择用这种方式来解决它,你没有说明。我的建议是减少运算次数,没有模数op:
函数倍数f3和5(num){
设total=0;
对于(设i=3,j=5;i我的建议,减少了运算次数,没有模数op):
函数倍数f3和5(num){
设total=0;
对于(假设i=3,j=5;如果49,你应该有:3+6+9+12+15+18+21+24+27+30+33+36+39+42+45+48+5+10+15+20+25+30+35+40+45,结果正好是633。我理解正确吗?是的。在进一步挖掘之后,我认为问题是他们之间的重复。你绝对正确。关于如何解决这个问题,你有什么建议/提示吗o那?你对3和5的倍数在total
中被再次添加有问题吗?对于49,你应该有:3+6+9+12+15+18+21+24+27+30+33+36+39+42+45+48+5+10+15+20+25+30+35+40+45,结果正好是633。我理解正确吗?是的。再深入一点后,我认为问题在于du在它们之间复制你是完全正确的。你对如何做有任何建议/提示吗?你对再次添加total
中的3和5的倍数有问题吗?除了我试图想出一个解决方案之外,我没有理由这样设计它。我喜欢这添加的简单性。没有理由y我是这样设计的,而不仅仅是我试图想出一个解决方案。我喜欢这增加的简单性。