Javascript验证指数方程的函数

Mon*_*an5 4 javascript recursion

这是一个新的任务.我想要的答案/输出是正确的.我只是不明白为什么.如果电源功能与我检查的数字相匹配,我希望输出为真.我确实得到了这些例子的答案,但我不明白这个递归函数是如何工作的.

在这个函数的else中,我说base*函数本身.甚至代表什么?怎么可以base * power(base, exponent - 1);计算?它不应该只是围成一圈然后最终结束?

console.log(power(2,4) === 16);
console.log(power(2,3) === 8);
console.log(power(2,2) === 4);

var power = function(base, exponent) {
    if(exponent === 0) {
        return 1; 
    }
    else {
        return base * power(base, exponent - 1);
    }
};
Run Code Online (Sandbox Code Playgroud)

Hun*_*len 5

函数power返回一个整数,因此当函数返回时base * <some_integer>是一个完全有效的表达式.追踪这些东西的最好方法是用笔和纸:

调用堆栈的电源(2,4):

power(2, 4) = 2 * power(2, 3)
power(2, 3) = 2 * power(2, 2)
power(2, 2) = 2 * power(2, 1)
power(2, 1) = 2 * power(2, 0)
power(2, 0) = 1 <--base case
Run Code Online (Sandbox Code Playgroud)

现在你所要做的就是将值替换为调用堆栈

power(2, 4) = 2 * 8 = 16
power(2, 3) = 2 * 4 = 8
power(2, 2) = 2 * 2 = 4
power(2, 1) = 2 * 1 = 2
Run Code Online (Sandbox Code Playgroud)