给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
偷懒……直接利用Python的内置函数pow()。
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
return pow(base,exponent)
利用乘法,不过得考虑底数是否为0,以及指数与0的关系。当指数exponent为0时,任何数的0次方都是1;当exponent不等于0,但底数base为0时,0的任何次方都为0;当底数不为0,这时候要区分指数exponent与0的关系:当指数大于0,直接将底数base连乘exponent次就好;当指数小于0,将指数取相反数,换成正数,然后在连乘,最后将结果取倒数。
-*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
if exponent == 0:
return 1
if base == 0:
return 0
flag = True # 设置一个指数是否小于0的标志,默认为True,即指数为正数。
if exponent < 0:
exponent = -exponent
flag = False
result = 1
for i in range(exponent):
result *= base
return result if flag else 1/result
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
if exponent == 0:
return 1
if base == 0:
return 0
flag = True # 设置一个指数是否小于0的标志,默认为True,即指数为正数。
if exponent < 0:
exponent = -exponent
flag = False
if exponent % 2 == 0: # 判断指数是否为偶数
res = self.Power(base,exponent//2)
res *= res
else:
res = self.Power(base,exponent//2)
res *= res
res *= base
return res if flag else 1/res
利用快速幂,具体思路我在另一篇博客里进行了介绍:https://blog.csdn.net/ggdhs/article/details/90141960
# -*- coding:utf-8 -*-
class Solution:
def Power(self, base, exponent):
# write code here
if exponent == 0:
return 1
if base == 0:
return 0
flag = False
if exponent<0:
exponent = -exponent
flag = True
res = 1
while exponent:
if exponent & 1: # 判断当前的最后一位是否为1,如果为1的话,就需要把之前的幂乘到结果中。
res *= base
base *= base # 一直累乘,如果最后一位不是1的话,就不用了把这个值乘到结果中
exponent = exponent >> 1
return res if not flag else 1/res