实现pow(double a, int b) 最简单直接的方法就是用一个循环使得result *= a 做b次,但是,这样的方法不是最优的,比如我们求2^100, 我们只需要得到2^50就可以了,因为2^100 =2^50 *2^50。而要求2^50,只需要得到2^25就可以了,所以,按照这样一个思路,要求pow(double a,int b),我们可以按照如下方法做:
double pow(double a,int b)
{
if(b == 0) return 1;
if(b == 1) return a;
double temp = pow(a,b/2);
temp = temp*temp;
return ((b % 2 == 0) ? temp : temp*a);
}
本文介绍了一种改进的幂运算方法,通过递归分解减少计算复杂度,以实现更快的2的幂次方计算。
420

被折叠的 条评论
为什么被折叠?



