正在做一道求[min, ..., max]的数字列表的最小公倍数LCM的题,我的思路是先求出列表中前两个数a和b的最大公约数GCD,然后由公式LCM = a * b / GCD得到最小公倍数,再求前两个数的最小公倍数和第三个数的最小公倍数,以此类推至最后一个数:
array = [12, 24, 36];
GCD(12, 24) = 2;
//LCM = a * b / GCD
LCM(12, 24) = 24;
LCM(LCM(12, 24), 36) = 72;
LCM(12, 24, 36) = 72;
Code:
function smallestCommons(arr) {
var max = arr[arr.length-1];
var num = [];
// Get the Numlist of min to max
for(var min=arr[0],i=0; i
在Pythontutor上调试的时候,在出错的前一步可以看到函数结果得到了LCM(1, 2, 3, 4, 5) = 60,但是无法返回结果并且在GCD函数的while循环出现死循环,找不出原因。
学编程不久,代码格式和思路都比较乱,前辈们有什么意见尽管指出,谢谢。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
问题出在这里。你应该写
你的那种写法,到了j==len-1的时候,NextNum是undefined,然后你就死循环了。
为了能够在将来熟练地指出这样的错误,请背诵Javascript真值表(贴出来的只是冰山一角):

==
===
if