gpt4 book ai didi

javascript - 为什么这个函数会产生无限循环?

转载 作者:行者123 更新时间:2023-11-28 18:09:43 24 4
gpt4 key购买 nike

第一个函数确定一个数是否为素数。第二个函数应该创建一个数组,其中包含最大值(包括最大值)的所有素数,但由于某种原因它给了我一个无限循环。

function isPrime(num) {
for (i = 2; i < num; i++) {
if (num % i === 0) {
return false
}
}
if (num <= 1) {
return false;
}
return true;
}

function primes(max) {
var all = [];
for (i = 2; i <= max; i++) {
if (isPrime(i)) {
all.push(i);
}
}
}

primes(17);

最佳答案

您的i变量是全局变量,因此两个函数都使用相同的i。这意味着第一个函数在第二个函数循环时更改它。

因为第一个函数在完成时会将i设置为num-1,并且numi的值在执行之前,它会有效地将i减一。因此,i 将在第二个函数的下一次循环迭代中获得相同的值,而永远不会前进。

通过在两个函数中添加 var 关键字来解决此问题。

for(var i=2; // ...etc) 

关于javascript - 为什么这个函数会产生无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41867603/

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