这如何变成递归中的数字?使用Javascript

时间:2016-01-14 21:20:47

标签: 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语句中的power(base, exponent - 1),这是如何变成一个数字,以便base可以乘以它?

P.S。对不起大家,我刚刚意识到我的标题可能与我想问的内容有点不同,即使给出了答案。我只是不确定这种递归是如何起作用的,因为我一直在想如何base * power(base, exponent - 1),因为对于第一个循环,它会像2* power(2, 3 - 1)power(2, 3 - 1)不是数字。基础如何能够使它成倍增加,但答案再次向我展示了我只是没想到它正确地看到它。

1 个答案:

答案 0 :(得分:2)

else语句中的power(base, exponent - 1)返回函数的结果,这是一个数字。

power(2, 3)

的详细说明

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

2 * (power(2,2))
2 * (2 * (power(2,1)))
2 * (2 * (2 * (power(2,0))))
2 * (2 * (2 * (1)))