数值的整数次方

实现函数double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。

 示例 1:

输入: 2.00000, 10
输出: 1024.00000

示例 2:

输入: 2.10000, 3
输出: 9.26100

示例 3:

输入: 2.00000, -2
输出: 0.25000
解释: 2-2 = 1/22 = 1/4 = 0.25

思路:二进制法:

           

这里必须要使用 long类型替换 n

 1 /*数值的整数次方*/
 2     public double myPow(double x, int n) {
 3         long N = n;
 4         if (N == 0 || x == 1) {
 5             return 1.0;
 6         }
 7         double result = 1.0;
 8         if (N < 0) {
 9             x = 1 / x;
10             N = -N;
11         }
12         while (N > 0) {
13             if (N % 2 == 1) {
14                 result *= x;
15             }
16             x *= x;
17             N = N / 2;
18         }
19         return result;
20     }

 

posted @ 2020-08-07 09:40  王余阳  阅读(123)  评论(0)    收藏  举报