有人能帮我理解这个代码中发生了什么吗
can someone help me understand what is happening in this code?
在下面的代码中,我很难理解这个计算是return base * power(base, exponent - 1);
。基数是否再次与包含基数的power
函数相乘?
var power = function(base,exponent){
if(exponent === 0){
return 1;
} else {
return base * power(base, exponent - 1);
}
};
power(2,2);
这是否意味着return base = 2*(2,2-1)
?
基数又和里面有基数的幂函数相乘了吗?
是的,当然,这就是这个递归实现的实际工作方式。
例如,如果你扩展power(10, 4)
,你会得到:
power(10, 4)
= 10 * power(10, 3)
= 10 * 10 * power(10, 2)
= 10 * 10 * 10 * power(10, 1)
= 10 * 10 * 10 * 10 * power(10, 0)
= 10 * 10 * 10 * 10 * 1
希望从这个展开式中可以清楚地看出为什么这是一种有效的(尽管很慢)计算指数的方法。
它是2的0次方或20,始终为1。
这是一种计算指数的递归方法。尽管Math.pow效果更好。
因此,如果指数为零,则递归结束if (exponent === 0) return 1
。如果指数不为零。然后该方法调用自己递减指数变量。
一旦方法return 1;
将值从堆栈中取出并相互相乘,神奇的事情就会发生return base * power(base, exponent - 1);
。
这不是最好的方法。
它是内置方法Math.pow
的自定义实现。所以这些语句输出相同的结果:
console.log(power(2,8)); // 256
console.log(Math.pow(2, 8)); // 256
如果需要,请使用Math.pow
。
相关文章:
- webpack代码拆分了handlerbs文件——结果是文件很大
- Javascript代码添加了一些不应该存在的内容
- 我的CSS/Javascript下拉菜单测试代码出了什么问题
- 这个代码出了什么问题?(Jquery)
- 这段代码中发生了什么
- Wamp没有识别出我的代码发生了更改
- 十分钟内的 Javascript:此示例代码中发生了什么说明惰性范围
- 有人请帮助解释这个javascript代码,即发生了什么以及代码在做什么
- jQuery 1.4.4 和 1.7.2 之间的 .ajax() 发生了什么导致代码中断
- 此代码中发生了什么,如果没有“with”关键字,以下内容的基本实现是什么
- 有人能帮我理解这个代码中发生了什么吗
- 任何天才都能告诉我这个小代码中发生了什么吗?来自 JavaScript Ninja 的秘密
- 这个Javascript代码的幕后发生了什么
- 当我插入MySQL时,我的代码发生了变化
- 我试图分析以下js代码.这是一个待办事项列表程序.有人能解释一下每一步发生了什么吗?
- IE7: javascript画布代码曾经在IE7中工作,现在不能了.这两次修订之间发生了什么导致了这种情况
- 识别是否发生了代码注入(JollyWallet等)
- 有人能解释一下JQuery的开头代码行到底发生了什么吗?
- 有人可以解释这段代码中发生了什么
- 我的ajax代码发生了什么