gpt4 book ai didi

javascript - 无法检测JS中 'while loop'无限循环的原因

转载 作者:行者123 更新时间:2023-11-29 16:31:25 25 4
gpt4 key购买 nike

我的 while 循环中有一个无限循环,但我找不到原因。

这是一个简单的函数,返回参数数字的总和。我使用 while 循环,因为它需要将数字相加,直到达到一位数。我确保添加了一条语句,以确保在某个时刻循环会中断。但显然不会。

function digital_root(n) {
num = n;
sum = 0;
while (num.toString().length>1){
for (i=0; i<num.toString().length; i++) {
sum += parseInt(num.toString()[i])
}
num = sum;
}
return sum;
}
digital_root(456)

我收到一条警告,指出第 4 行(while 循环)有无限循环。我希望 num=sum 能够将新的整数(位数减少)重新分配给 num 变量,从而在某个时刻跳出循环。这是错误的吗?

更让我困惑的是,我用来调试问题的大多数 JS 编辑器都会返回输出,但这需要很长时间。那么这是一个无限循环还是不是?

最佳答案

您有一个嵌套循环结构,其中第一个条件始终为 true。

如果只得到 10 以下的数字,您可以再次调用该函数作为递归。

function digital_root(n) {
var num = n.toString(), // declare and use the string value
sum = 0,
i;

for (i = 0; i < num.length; i++) {
sum += parseInt(num[i], 10)
}
return sum > 9
? digital_root(sum)
: sum;
}

console.log(digital_root(456));

关于javascript - 无法检测JS中 'while loop'无限循环的原因,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56303791/

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