为什么在论证部分是发生乘法(递归)

Why in argument section is happen multiplication(recursion)?

本文关键字:递归 证部 为什么      更新时间:2023-09-26

为什么在参数部分是发生乘法,在else语句中?

function main(x, y) {
    if (y === 0) {
        return 1;
    } else {
        return x * main(x, y - 1); // Why in argument section is happen multiplication
    }
}
main(2, 3);

这是一个递归函数,如果不检查y==0,函数将永远不会停止。

现在它是这样计算的

2 * (2 * (2 * (2 * 1)))

其中y是

      3    2    1    0

我认为这段代码做的是Math.pow()函数所做的(以不同的方式)。第一个论点是基础,第二个论点是力量。这里的main(x, y)x提升为y的幂,这可以通过将xy相乘来实现。

我会尝试在每次通过时扩展它:-

  1. main(2,3);返回2*main(2,2);

  2. main(2,2);返回2*main(2,1);

  3. main(2,1);返回2*main(2,0);

  4. main(2,0)返回1

使用(1)中的(2)、(3)、(4),我们得到:

2*2*2*1;

因为这就是计算指数的方法。