这在递归中是如何变成一个数字的?Javascript

这在递归中是如何变成一个数字的?Javascript,javascript,function,recursion,numbers,return,Javascript,Function,Recursion,Numbers,Return,我正在读一本书,书中提到了递归,但我有点困惑 我知道它在做什么,但只是其中的一部分,我不明白它是怎么做的 function power(base, exponent) { if (exponent == 0) return 1; else return base * power(base, exponent - 1); } console.log(power(2, 3)); else语句中的幂(base,exponent-1)如何将其转换为一个数字,以便base可以将

我正在读一本书,书中提到了递归,但我有点困惑

我知道它在做什么,但只是其中的一部分,我不明白它是怎么做的

function power(base, exponent) {
  if (exponent == 0)
    return 1;
  else
    return base * power(base, exponent - 1);
}

console.log(power(2, 3));
else语句中的幂(base,exponent-1)如何将其转换为一个数字,以便
base
可以将其相乘

顺便说一句,对不起大家,我刚刚意识到我的标题可能与我想问的有点不同,即使给出了答案。我只是不确定这个递归是如何工作的,因为我一直在想为什么
base*power(base,exponent-1)
,因为对于第一个循环,它将类似于
2*power(2,3-1)
power(2,3-1)
不是一个数字。基数怎么能将它相乘呢?但答案再次直观地告诉我,我只是没有正确地想象它。else语句中的
幂(base,exponent-1)
返回函数的结果,它是一个数字

权力(2,3)

这将返回2*(2*(2*(1))=8

else语句中的幂(基数,指数-1)返回函数的结果,该结果是一个数字

权力(2,3)

这将返回2*(2*(2*(1))=8


你期望幂(基数,指数-1)返回什么?特别是考虑代码< >指数==1 < /代码>代码>返回1;
@MattBurland我不知道该返回什么,但通过nikhil提供的演示,我终于可以直观地看到它。您希望
幂(基数,指数-1)
返回什么?特别是考虑代码< >指数==1 < /代码>代码>返回1;
@MattBurland我不知道会返回什么,但通过nikhil提供的演示,我终于看到了它!,非常感谢。这就是我需要了解流如何工作的示例!非常感谢。谢谢,啊!!,非常感谢。这就是我需要了解流如何工作的示例!非常感谢。非常感谢。
2 * (power(2,2))
2 * (2 * (power(2,1)))
2 * (2 * (2 * (power(2,0))))
2 * (2 * (2 * (1)))