【发布时间】:2016-07-07 04:51:22
【问题描述】:
function power(base, exponent) {
if (exponent == 0)
return 1;
else
return base * power(base, exponent - 1);
}
我想我理解了递归的基本原理,它只是意味着你在函数本身内调用函数。这可以用来执行各种循环,但我无法弄清楚上面的代码实际上是如何决定循环以计算出一个数字的指数值。我使用函数 power(2,5) 作为参数,并且函数知道答案是 32,但是怎么做呢?函数是否循环本身每次从指数中减去 1,然后乘以 base * base 直到指数达到零?如果是这样,那么在函数中调用 power 函数是如何准确地完成这一点的呢?一旦指数达到零,函数不会只返回 1 而不是正确答案吗?
【问题讨论】:
-
递归很简洁,但它通常是much slower,而不是可能需要更多代码的等效迭代方法。
标签: javascript recursion