gpt4 book ai didi

Javascript 循环内的递归函数

转载 作者:行者123 更新时间:2023-12-03 06:07:54 25 4
gpt4 key购买 nike

我似乎无法摆脱:RangeError:超出最大调用堆栈大小错误。我试图找到能被某个范围内的所有数字整除的最小数字。该范围内的数字将作为数组传递给函数。

function smallestNumberEvenlyDivisible(smallest, numbers) {
var z = 0;

for (z; z < numbers.length; z++) {
if (smallest % numbers[z] !== 0) {
smallest += smallest;
return smallestNumberEvenlyDivisible(smallest, numbers);
}
}

return smallest;
}

smallestNumberEvenlyDivisible(2018940, [18, 19, 20, 21, 22, 23]);

我期望输出为:6056820,但由于堆栈错误,显然不是。

几乎没有想法了。请问有什么建议吗?

最佳答案

19 永远无法除 2^n,其中 n 是自然数,因为 19 中唯一的质因数是其本身,唯一的 2^n2。这意味着,当您的原始 smallest 不能被 19 整除时,就会产生无限递归。

我有一段时间没有做这些事情了,不确定是否有更快的方法,但最小的应该是包含所有数字的所有质因数的最小集合的乘法。

在示例中,

  • 18 = 2 * 3 * 3
  • 19 = 19
  • 20 = 2 * 2 * 5
  • 21 = 3 * 7
  • 22 = 2 * 11
  • 23 = 23

除以所有数字的最小数字:2 * 2 * 3 * 3 * 5 * 7 * 11 * 19 * 23 = 6056820 如您所料。如何通过算法找到素因数应该很容易找到。

再次注意,可能有更快的方法,也许您打算在不犯错误的情况下实现?

关于Javascript 循环内的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39453489/

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