我似乎无法达到最大不能超过20的变量的极限。有一个内部循环可以测试1到20之间的所有数字是否可以由外部循环中的变量除而没有小数位-整数。当limit = 20时,我退出外循环,并让我知道的外变量可以被内循环的每次迭代所除。似乎很容易。 Vscode不会走太远,我永远都不会超过限制=10。似乎我的vs编译器刚刚触底。
有什么想法吗?非常有义务...
let starter = 2520;
let limit = 0;
while (limit < 20) {
let i = 1;
while (i <= 20) {
if (starter % i !== 0) {
limit = 0;
break;
}
limit = i;
i++;
}
if (limit === 20) {
return starter;
}
starter++;
}
应在
退出limit === 20
答案 0 :(得分:2)
主要问题是您在while循环中使用了k = i+j
语句,而实际上并没有return
循环。
请记住,
break
用于返回到调用它的步骤,而return
用于结束循环。
这样说,您应该首先break
循环,然后break
返回所需的内容。
如果用return
替换代码中return
的唯一外观,则可以在break
变量中查看结果。
starter
它将在let starter = 2520;
let limit = 0;
while (limit < 20) {
let i = 1;
while (i <= 20) {
if (starter % i !== 0) {
limit = 0;
break;
}
limit = i;
i++;
}
if (limit === 20) {
break; // Use break, not return
}
starter++;
}
console.log(limit)
console.log(starter)
时结束while循环。
如@Bergi所述,如果您的代码位于函数内,则可以将
limit === 20
替换为console.log(starter)
。
答案 1 :(得分:0)
思考过程:
limit
设置在3个位置。两次将其设置为0
,仅将其设置为i
。i
在外部时间开始时声明,并且始终重置为1
。limit
到达20
的唯一方法是在外循环的一次迭代中,i
到达20
。i
仅在内部循环中递增,因此i
必须在内循环中到达20
20
,i
必须针对每个测试的数字(即1..20)平均划分为starter
。我猜这永远不会发生。limit
为20
或更高时,它才能退出,因此程序处于无限循环中。如果添加一些console.log
语句或逐步执行代码,则会发现问题。