不确定为什么未达到我的限制

时间:2019-09-03 14:37:34

标签: javascript while-loop visual-studio-code

我似乎无法达到最大不能超过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

2 个答案:

答案 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)

思考过程:

  1. limit设置在3个位置。两次将其设置为0,仅将其设置为i
  2. i在外部时间开始时声明,并且始终重置为1
  3. 因此,limit到达20的唯一方法是在外循环的一次迭代中,i到达20
  4. i仅在内部循环中递增,因此i必须在内循环中到达20
  5. 为了达到20i必须针对每个测试的数字(即1..20)平均划分为starter。我猜这永远不会发生。
  6. 仅当limit20或更高时,它才能退出,因此程序处于无限循环中。

如果添加一些console.log语句或逐步执行代码,则会发现问题。