题目:
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0
解题思路1:
分情况讨论,分别为指数大于0和指数小于0的情况进行;当小于0时为先将负数取绝对值,然后再算出结果之后将结果取倒数即可。注意使用这种方法时需要全面考虑,避免只考虑指数为正数的情况。
思路1代码实现:
# -*- coding:utf-8 -*-
class Solution:
def __init__(self):
self.g_InvalidInput=False
def Power(self, base, exponent):
# write code here
if base == 0 and exponent < 0:
self.g_InvalidInput=True
return 0
# solution 1
if exponent >= 0:
result = self.PowerCore(base,exponent)
if exponent < 0:
result = 1.0/self.PowerCore(base,-exponent)
return result
def PowerCore(self,base,exponent):
if exponent ==0:
return 1
if exponent ==1:
return base
result = 1
for i in range(0,exponent):
result *=base
return result
思路1运行结果:
方法1提交结果.png解题思路2:(高效的解法)
为了提高效率,可以使用如下快捷有效的公式进行计算:
思路2代码实现:
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
#solution 2
if base == 0 and exponent < 0:
self.g_InvalidInput=True
return 0
if exponent >= 0:
result = self.ExpCore(base,exponent)
if exponent < 0:
result = 1.0/self.ExpCore(base,-exponent)
return result
def ExpCore(self,base,exponent):
if exponent ==0:
return 1
if exponent ==1:
return base
result = self.ExpCore(base,exponent>>1)
result *= result
if exponent&0x1==1:
result *=base
return result
思路2运行结果:
思路 2运行结果.png
网友评论