JavaScript - 最大的公约数 - 陷入无限循环
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaScript - 最大的公约数 - 陷入无限循环相关的知识,希望对你有一定的参考价值。
我正在为计算机编写一个函数,它是多个数字的最大公约数,我在这个无限循环中陷入困境:
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语句而且我陷入无限循环中。
有什么指针吗?
答案
你可以用简单的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 - 最大的公约数 - 陷入无限循环的主要内容,如果未能解决你的问题,请参考以下文章