当我在解决“将奇数从 1 加到 20”的问题时,我编写了以下代码:
var i, sum=0;
for (i=2; i<=20; i*2){
sum=sum+i;
}
document.write(sum);
当我通过浏览器启动它时,它不起作用。但是,当我将 i*2
固定为 i+=2
时,它起作用了。
我错过了什么?我不能在 For 循环中使用 *(multiplier) 吗?
原文由 Caleb Hyun 发布,翻译遵循 CC BY-SA 4.0 许可协议
当我在解决“将奇数从 1 加到 20”的问题时,我编写了以下代码:
var i, sum=0;
for (i=2; i<=20; i*2){
sum=sum+i;
}
document.write(sum);
当我通过浏览器启动它时,它不起作用。但是,当我将 i*2
固定为 i+=2
时,它起作用了。
我错过了什么?我不能在 For 循环中使用 *(multiplier) 吗?
原文由 Caleb Hyun 发布,翻译遵循 CC BY-SA 4.0 许可协议
问题是您没有在 i
中更新 loop
的值。
我想添加从 1 到 20 的奇数
然后,您需要将 i
的初始值更改为 1
。
var i, sum = 0;
for (i = 1; i <= 20; i += 2){
sum += i;
}
document.write(sum);
此外,您还可以使用公式求出 odd numbers from 1 to 20
的总和。
n = 20;
console.log(n % 2 == 0 ? (n * n)/ 4 : ((n + 1) * (n + 1))/4);
原文由 Mihai Alexandru-Ionut 发布,翻译遵循 CC BY-SA 4.0 许可协议
13 回答13k 阅读
7 回答2.2k 阅读
3 回答1.3k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读
如果需要将1到20之间的奇数相加,则需要
i+=2
作为for的第三个参数,需要将变量初始化为1才能得到正确的结果:当你有
2 添加到
i
结果存储到i
。当你试过i*2
计算的值是i
的两倍,但它不会改变i
的值,所以这将“工作”在哪里
不仅计算的值是
i
的两倍,而且还将结果存储到i
中。但是,即使这会运行,结果也不正确,因为您使用了错误的公式。此外,您可以在不使用
for
的情况下计算结果:假设 n 是对:并且因为我们知道我们“丢失”了一半的数字并且所有的对数字都比之前的受损数字大了 1,我们可以减去序列的一半
现在我们正好有了所需的双倍值,所以最终的公式是:
让我们把它变成
function
接着:
请注意,如果它是奇数,我们会增加限制。