我只是在读一本书,它提到了递归,但我有点困惑。
我知道它在做什么但只是其中的一部分我不明白它是如何完成的。
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)
不是数字。基础如何能够使它成倍增加,但答案再次向我展示了我只是没想到它正确地看到它。
答案 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)))