剑指12-数值的整数次方

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。


  • 负幂转为正幂,便于操作。方法:对于a的b次幂a**b,如果b<0,则a**b等价于(1.0/a)**(-b)
  • 提高效率,有公式:a**(2b)=(a**b)**2, a**(2b+1)=a*(a**b)**2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution:
def Power(self, base, exponent):
# write code here
def pr(base, expo):
if expo == 0:
return 1
if expo & 1 == 1:
return base*pr(base, expo>>1)**2
else:
return pr(base, expo>>1)**2

if exponent < 0:
base = 1.0/base
exponent = -exponent

return pr(base, exponent)