我编写了一个简单的脚本,用于使用递归方法 - Euclid 算法找到最大公约数 (GCD) 和最小公倍数 (LCM)。
不幸的是,如果它需要在不止一个步骤中执行此操作,则要从函数返回的相关变量将变得未定义。我已经尝试在带有断点的调试器中跟踪它,它似乎充分遵循递归并适当地返回到原始函数,但是它在函数结束时神秘地消失了,即使它是要返回的?
不知道为什么会发生这种情况或我能做些什么来解决它。我的代码如下:
function GCD(a, b) {
if (a % b == 0) {
return b;
}
else {
GCD(b, (a % b));
}
}
function LCM (a, b) {
return (a*b)/GCD(a, b);
}
function makeDM (a, b) {
return (GCD(a, b) + " " + LCM(a, b));
}
因此,如果您使用诸如 60、20 之类的 a 和 b,它将给出 20 和 60 的正确答案。但是,如果您使用诸如 20、60 或 126、35 之类的数字,则它会惨遭失败。