递归函数 - 计数如何存储在此阶乘解决方案中

Recursive function - how is the tally stored in this factorial solution?

本文关键字:阶乘 解决方案 存储 何存储 递归函数      更新时间:2023-09-26

在下面的函数中,它返回一个数字的阶乘,当递归调用该函数时,数字的高是如何存储的。

function factorialize(num) {
    if (num < 3) {
        return num;
    }
    return num * factorialize(num - 1);
}
factorialize(5);

我知道这是向后工作以实现 5 的阶乘,这是通过将所有正数乘以传递的数字获得的:

1 * 2 * 3 * 4 * 5 得到结果

我对如何存储或计算每个乘法的结果以不断向 120 的结果建立感到困惑。

谢谢大家:)

该函数正在执行检查,然后调用自身。当它再次调用自己时,它会传入计算结果。

因此,每次调用factorialize(num - 1);时,num将是上一次调用的结果,计算将从该值中删除 1 并将该新值传入。

步骤是这样的:

  • 初始调用是 factorialize(5) ,它调用参数为 5 的函数。
  • 该函数检查5是否小于 3(不是),如果不是,则再次调用自身。这次的参数是原始参数减去 1 - 所以4
  • 下一次,它将检查 4 是否小于 3。如果没有,请再次调用自己 4 减 1 - 3
  • 这一直持续到传入的参数小于 3