gpt4 book ai didi

JavaScript。循环问题

转载 作者:行者123 更新时间:2023-12-01 01:34:41 24 4
gpt4 key购买 nike

尝试创建一段代码,返回 1000 以下且为三的倍数的所有数字。这是相关的代码段。

  <script>
var i = 1;
var mplesOf3 = [0];
var myNum = 0;
while (myNum < 1000){
(3 * i) = myNum;
mplesOf3.push(myNum);
i++;
};
alert(mplesOf3);
</script>

代码在 html 页面中运行,因此有样式标签和警报。

代码基本上尝试执行 3x1 然后 3x2 然后 3x3 等等,直到结果超过 1000。我几天前就提出了这个概念,但我仍然不确定为什么它不能正常运行。

根据记录,我已经看到了如何执行此操作的其他解决方案,但因为我正在学习并想要改进,所以我想知道为什么这个解决方案不起作用。

提前谢谢

编辑:我应该知道这个错误是愚蠢的。我在伪代码上写了 (3 x 1) = n 但没有发现错误,因为我觉得没有什么问题。感谢各方,我会尽可能接受答复。

最佳答案

您的 JavaScript 引擎应该告诉您有语法错误(如果您使用的是浏览器,请查看 Web 控制台)。您不能使用类似 (3 * i) 的表达式在作业的左侧。在 JavaScript 中,= 右边的东西被评估,并分配给左边的东西。

您的算法也会导致 1002 被推送,因为您没有测试设置 myNum = 3 * i 的结果直到插入后

坚持原来的算法,但修复这两件事:

var i = 1;
var mplesOf3 = [0];
var myNum;
while ((myNum = 3 * i) < 1000){
mplesOf3.push(myNum);
i++;
} // Note: No semicolon here, you don't put semicolons after blocks
// attached to control-flow statements
console.log(mplesOf3);

这一点:

while ((myNum = 3 * i) < 1000){

评估3 * i ,将结果赋给 myNum ,然后检查该值是否为 < 1000。

也就是说,使用 for 可能会更简单(更少的变量,更少的乘法)和myNum += 3在增量部分:

var mplesOf3 = [0];
var myNum;
for (var myNum = 3; myNum < 1000; myNum += 3) {
mplesOf3.push(myNum);
}
console.log(mplesOf3);

也没有特别好的理由对 0 进行特殊处理。像这样,所以我可能最初会将其排除在数组之外并从 0 开始计数:

var mplesOf3 = [];
var myNum;
for (var myNum = 0; myNum < 1000; myNum += 3) {
mplesOf3.push(myNum);
}
console.log(mplesOf3);

关于JavaScript。循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52932008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com