gpt4 book ai didi

JavaScript - 最大公约数 - 陷入无限循环

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:52:00 24 4
gpt4 key购买 nike

我正在编写一个函数来计算多个数字的最大公约数,但我陷入了这个无限的 while 循环:

const gcd = (...nums) => {
let answer = Math.min.apply(null, nums);
while (answer > 0) {
for (let index in nums) {
if (nums[index] % answer !== 0) {
answer--;
break;
} else if (index === (nums.length-1)){
return answer;
}
}
}
}

gcd(20, 155, 30)

对于最后一行的测试用例,我能够得到 5,这是正确答案。但似乎一旦答案达到 5,我就无法进入 if 或 else if 语句,我陷入了无限 while 循环。

有什么指点吗?

最佳答案

您可以将 for in 循环替换为简单的 for 循环。不要使用 for in 循环遍历数组。

const gcd = (...nums) => {
let answer = Math.min.apply(null, nums);
while(answer > 0) {
for (let index = 0; index < nums.length; index++) {
if (nums[index] % answer !== 0) {
answer--;
break;
} else if (index === (nums.length-1)){
return answer;
}
}
}
}

console.log(gcd(20, 155, 30));

关于JavaScript - 最大公约数 - 陷入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47853687/

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