`
java-mans
  • 浏览: 11423428 次
文章分类
社区版块
存档分类
最新评论

pow(double a,int b) [No. 41]

 
阅读更多

实现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);
}
备注:如果 b 可以是负数,则要考虑 a 是情况。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics