题目描述
- 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
- 保证base和exponent不同时为0。
思路
考虑exponent是正负的情况。
10^1011=10^1000*10^0010*10^0001;
指数>>1,底数^2,结果是一样的,exponent&1==1只有位值为1的才计算,底数并翻倍了。
Java 1.8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| public class Solution { public double Power(double base, int exponent) { double result = 1; int a = exponent; if(base == 0){ return 0; } if(exponent == 0){ return 1; } if(exponent < 0){ exponent = -exponent; } while (exponent!=0) { if((exponent&1)==1){ result*=base; } base*=base; exponent >>= 1; } return a > 0?result:1/result; } }
|