如何计算快速幂,比如 x^100000000次方,直接循环很慢。。谢谢了

如题所述

因为 x^n = (x^(n/2))^2
根据这个公式,可以在 log2N时间内算出乘法幂

递归算法:
int pow(int x,int n)
{
if(n==1) return x;
else if(n&1) //n is odd
{
return x*pow(x,n/2);

}
else
{
return pow(x,n/2);
}

}

非递归算法:

int pow(int x,int n)
{
int temp(x),res(1);
while(n)
{
if(n&1)
{
res *= temp;
}
temp *= temp;
n>>=1;
}
return res;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-12-25
用计算器,作为人类,不得不会使用工具

如何计算快速幂,比如 x^100000000次方,直接循环很慢。。谢谢了
(x^(n\/2))^2 根据这个公式,可以在 log2N时间内算出乘法幂 递归算法:int pow(int x,int n){ if(n==1)return x;else if(n&1)\/\/n is odd { return x*pow(x,n\/2);} else { return pow(x,n\/2);} } 非递归算法:int pow(int x,int n){ int temp(x),res(1);while(n...

相似回答
大家正在搜