数值的整数次方
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0。不得使用库函数,同时不需要考虑大数问题,也不用考虑小数点后面0的位数。
示例1
输入
2.00000,3
返回值
8.00000
解题思路:
- 暴力法
exponent个base相乘
def Power(self, base, exponent):
if exponent == 0:
return 1.0
if base == 0.0:
return 0.0
tmp = 0
if exponent < 0 :
exponent *= -1
tmp = 1
pmp = 1.0
for i in range(exponent):
pmp *= base
if tmp == 0:
return pmp
else:
return 1/pmp
- 非递归快速幂
相当于遍历n的二进制位,是1就乘进结果
def Power(self, base, exponent):
if exponent == 0:
return 1.0
if base == 0.0:
return 0.0
if exponent < 0:
base = 1/base
exponent = -exponent
result = 1
while exponent > 0:
if (exponent & 1) == 1: #是1就乘进结果
result = result * base
base *= base
exponent = exponent >> 1 #遍历n的二进制位
return result