面试题16:数值的整数次方
2019-01-11 本文已影响0人
凌霄文强
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
知识点
Qiang的思路V1
求a的b次方,首先想到的是循环相乘,然后考虑正负取倒数,最后返回结果。
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
flag=True
if exponent<0:
flag=False
exponent=-exponent
result=1
for i in range(exponent):
result*=base
return result if flag==True else 1/result
Qiang的思路V2
在实现了上面的思路之后,也就想到了如果采取折半的形式可能效率相对提升一些。所以就有了下面的代码。
# -*- coding:utf-8 -*-
class Solution:
def getResult(self, a, b):
if b==1:
return a
r=self.getResult(a, int(b/2))
return r*r if b%2==0 else r*r*a
def Power(self, base, exponent):
# write code here
if exponent==0:
return 1
flag=True
if exponent<0:
flag=False
exponent=-exponent
result=self.getResult(base, exponent)
return result if flag==True else 1/result
作者原创,如需转载及其他问题请邮箱联系:lwqiang_chn@163.com。
个人网站:https://www.myqiang.top。