作业帮 > 综合 > 作业

C语言有关快速幂问题求帮忙解释下这哥函数的原理.double pow(double x,int n){\x09doubl

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/06/04 18:46:36
C语言有关快速幂问题
求帮忙解释下这哥函数的原理.
double pow(double x,int n)
{
\x09double ans = 1,tem = x;
\x09while (n)
\x09{
\x09\x09if (n & 1)
\x09\x09\x09ans *= tem;
\x09\x09tem *= tem;
\x09\x09n >> 1;
\x09}
\x09return ans;
}
原理就是n^4=(n^2)^2
偶数次幂可以拆解,这样利用位运算,二进制末尾1的是奇数,末尾0的是偶数,因此每次就是幂指数除以2(n>>1等价,便于理解),如果奇书就单独乘一个.
大概就是这个意思,可以减少乘法运算次数.