实现函数 double Power(double base, int exponent),求base的exponent次方。
注意:
1.保证base和exponent不同时为0。
2.不得使用库函数,同时不需要考虑大数问题
3.有特殊判题,不用考虑小数点后面0的位数。
数据范围:
,
,保证最终结果一定满足 
进阶:空间复杂度
,时间复杂度 %5C)
进阶:空间复杂度
2.00000,3
8.00000
2.10000,3
9.26100
2.00000,-2
0.25000
2的-2次方等于1/4=0.25
# -*- coding:utf-8 -*- class Solution: def Power(self, base, exponent): # write code here self.result = 1 if exponent>0: for i in range(exponent): self.result = self.result * base return self.result if exponent < 0: for i in range(-exponent): self.result = self.result * base return 1/self.result if exponent ==0 : return 1
# -*- coding:utf-8 -*- class Solution: def Power(self, base, exponent): # write code here def quick_mul(x, n): # 快速幂法 if not n: return 1.0 y = quick_mul(x, n//2) # 递归 if n%2 ==0: return y * y else: return y * y * x if exponent<0: base = 1 / base exponent = -exponent return quick_mul(base, exponent)
>> 1
实现除2 &1
可判断奇偶 class Solution: def Power(self,base,exponent): if base == 0: return 0 else: res = [1,base] for i in range(2,abs(exponent)+1): res.append(res[int(i>>2)] * res[int((i + 1) >> 2)]) if exponent >= 0 : return res[abs(exponent)] else: return 1/res[abs(exponent)]
s = Solution()
ans = s.power(3,-3)
print(ans)
```
题目描述
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
请在这里输入引用内容
保证base和exponent不同时为0
这道编程题考验求解数值的幂的过程,这里的幂要注意几种情况:
在求解幂为负整数的时候,注意在最后返回结果时,对其取倒数。
最直接的求解方法是:直接循环求数值积,但这种方式的时间复杂度是o(n),有兴趣的朋友再优化优化吧。
# -*- coding:utf-8 -*- class Solution: def Power(self, base, exponent): # write code here # 求数值幂,要注意整数包含正整数和负整数 # 如果幂是负整数,对结果取倒即可 # ------------------------ # method 1:使用内置方法 if (base==0.0 and exponent!=0) or (base!=0.0 and exponent==0) or (base!=0.0 and exponent!=0): return base ** exponent # ------------------------- # method 2:暴力循环法 时间复杂度 o(n) res=1 for i in range(abs(exponent)): res*=base if exponent<0: # 考虑负整数的情况 res=1/res return res # -------------------------- # method 3:
mark = 0 class Solution: def Power(self, base, exponent): global mark if base == 0:#排除0 return 0 if exponent == 0: return 1 if exponent < 0: #把复指数数变成正数 exponent = -exponent mark = 1 if exponent == 1: return base if exponent%2 == 0: if mark == 1: return (1/self.Power(base, exponent/2))**2 else: return self.Power(base, exponent/2)**2 else: if mark == 1: return (1/base)*(1/self.Power(base, exponent/2))**2 else: return base*self.Power(base, exponent/2)**2
class Solution { public: double Power(double base, int exponent) { int e = exponent; if (e < 0) { e = -e; base = 1 / base; } if (e == 1) { return base; } else if (e == 0) { return 1; } if (e & 1) { return base * Power(base * base, e >> 1); } else { return Power(base * base, e >> 1); } } };
# -*- coding:utf-8 -*- class Solution: def Power(self, base, exponent): if exponent < 0: base = 1.0 / base exponent = - exponent e = exponent if e == 1: return base elif e == 0: return 1 if e & 1: return base * self.Power(base * base, e >> 1) else: return self.Power(base * base, e >> 1)
# -*- coding:utf-8 -*- # 解题思路:考察代码的完整性,注意exponent为负的情况 # 有一个技巧:base的exponent次方: # 当exponent为偶数时,pow(b, e) = pow(b, e/2) * pow(b, e/2) # 当exponent为奇数时,pow(b, e) = pow(b, e/2) * pow(b, e/2) * b # 当exponent为正数时,直接按上述表达式求值 # 当exponent为负数时,先求e的绝对值,然后用1除以pow(b,e) # 当exponent为0时,直接返回1 class Solution: def Power(self, base, exponent): return pow(base, exponent) def pow(self, base, exponent): if exponent == 0: return 1 if exponent == 1: return base ex = abs(exponent) result = pow(base, ex / 2) * pow(base, ex / 2) if ex % 2 == 1: result *= base if exponent < 0: return 1/result return result
class Solution: def Power(self, base, exponent): # write code here total = 1 if exponent == 0: return total elif exponent > 0: for i in range(1,exponent+1): total *= base return total else: t = -exponent for i in range(1,t+1): total *= base return 1/total
# -*- coding:utf-8 -*- class Solution: def Power(self, base, exponent): # write code here if base == 0 and exponent == 0 : return none return base**exponent