gpt4 book ai didi

javascript - 变量在递归javascript函数中变得未定义?

转载 作者:行者123 更新时间:2023-12-03 11:16:34 24 4
gpt4 key购买 nike

我编写了一个简单的脚本,用于使用递归方法 - 欧几里得算法找到最大公约数 (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));
}

因此,如果您使用 a 和 b,例如 60、20,它将给出 20 和 60 的正确答案。但是,如果您使用诸如 20、60 或 126、35 之类的数字,它会惨败。

最佳答案

您没有从函数的递归部分返回值,因此从函数返回的值将是 undefined。添加一个返回:

function GCD(a, b) {
if (a % b == 0) {
return b;
}
else {
return GCD(b, (a % b));
}
}

你也可以用一个return来写:

function GCD(a, b) {
return a % b == 0 ? b : GCD(b, (a % b));
}

关于javascript - 变量在递归javascript函数中变得未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15727327/

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