我很难理解 else block 。我知道它应该将基参数提高到指数参数。但它是如何工作的呢?
var power = function(base, exponent){
if (exponent === 0){
return 1;
}
else{
return base * power(base, exponent - 1);
}
};
power(2, 2);
最佳答案
power(base, exponent - 1)
实际上只是base * power(base, exponent - 1)
。但如果我们继续思考这些函数调用中发生了什么,我们就会看到:
base * ... pow(base, exponent - n)
让我们尝试一下power(2, 4)
:
2 * (2 * (2 * (2 * (1))))
2 * power(2, 4 - 1);
power(2, 4 - 1)
简化为
2 * power(2, 3 - 1)
简化为
2 * power(2, 2 - 1)
简化为
2 * power(2, 1 - 1)
并且简化为1
,因为指数
将为0
。当我们把它们放在一起时,这就是我们得到的:
2 * 2 * 2 * 2 * 1
关于javascript - 这段代码的 else block 的逻辑是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12877504/