如何解决计算能力的迭代解决方案
我正在开发一种有效的迭代代码来计算m n 。经过一番思考和谷歌搜索,我找到了这段代码;
public static int power(int n,int m)
// Efficiently calculates m to the power of n iteratively
{
int pow=m,acc=1,count=n;
while(count!=0)
{
if(count%2==1)
acc=acc*pow;
pow=pow*pow;
count=count/2;
}
return acc;
}
除了我为什么每次都将pow
的值都平方时,这个逻辑对我来说很有意义。我熟悉类似的递归方法,但是对我来说,这种平方不是很直观。我能帮她一下吗?带有解释的示例将非常有帮助。
解决方法
每次迭代都会对累加器进行平方,因为count
(这是逆累积功率)在每次迭代中都会被减半。
如果计数为奇数,则将累加器乘以数字。该算法依靠整数算法,该算法舍弃除法的小数部分,当计数为奇数时有效地再减1。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。