面试题16. 数值的整数次方

题目:

 

 

解答:

快速幂。

 1 class Solution {
 2 public:
 3     double myPow(double x, int n) 
 4     {
 5         double res=1.0;
 6         int i=n;
 7         while(i)
 8         {
 9             if(i&1)
10             {
11                 res*=x;     //i的低位存在,res*x
12             }
13             x*=x;           //x扩大为它的平方,因为二进制每位的差距是平方关系
14             i/=2;           //i向0靠近
15         }
16         return n < 0 ? 1/res:res;
17     }
18 };

 

posted @ 2020-05-09 14:00  梦醒潇湘  阅读(96)  评论(0)    收藏  举报