【发布时间】:2021-09-22 18:31:59
【问题描述】:
编辑** 阅读我的问题,我现在意识到为什么我得到无穷大,num2 和 num1 永远不会相等,因为 num2 永远是一个更大的数字。是否可以使用递归来解决这个问题,还是使用循环之类的东西更好?我能够解决这个问题,只是对递归感到好奇。
如果两个数字相同,我应该找到 LCM 并希望将其退回。如果它们不相等,我将再次调用我的函数,但每次都增加其原始值。
let leastCommonMultiple = (num1, num2) => {
if (num1 === num2) return num1;
return leastCommonMultiple(num1 + num1, num2 + num2)
}
console.log(leastCommonMultiple(4, 6)); // 12
console.log(leastCommonMultiple(3, 5)); // 15
console.log(leastCommonMultiple(2, 10)); // 10
【问题讨论】:
-
这个算法不起作用。你从哪里得到它和/或为什么你认为它会产生 LCM?>
-
我知道它不起作用。我写的。我对为什么它不起作用的理解是否正确?我还尝试设置第三个参数,并在每次调用该函数时递增 1。我的基本情况是,当 % num1 && n % num2 等于 0 时返回 n。
-
您可以轻松编写递归 GCD 函数。一旦你有了它,你就可以写
const lcm = (a, b) => a / gcd (a, b) * b。 -
我认为 RBarryYoung 指出这不仅仅是一个实施问题。由于许多原因,它从根本上被破坏了。
-
好的,所以我需要一个辅助函数?我不能只用一个函数来做到这一点?
标签: javascript recursion