【劍指Offer】10數值的整數次方
阿新 • • 發佈:2018-11-11
題目描述
給定一個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
時間限制:1秒;空間限制:32768K
解題思路
思路一
本題的難點在於考慮問題要全面,要考慮到以及exponent為負數的情況。
Python程式碼:
# -*- coding:utf-8 -*- class Solution: def Power(self, base, exponent): # write code here result = 1 if base==0 and exponent==0: return 1 if exponent == 0: return 1 elif exponent > 0: for i in range(exponent): result = result * base else: for i in range(-exponent): result = result * 1/base return result
思路二
使用快速冪演算法。
# -*- coding:utf-8 -*- class Solution: def Power(self, base, exponent): # write code here if base == 0: return 0 if exponent == 0: return 1 e = abs(exponent) tmp = base res = 1 while(e > 0): #如果最後一位為1,那麼給res乘上這一位的結果 if (e & 1 == 1): #n&1 等價於 (n%2)==1 res =res * tmp e = e >> 1 #n>>=1 等價於 n/=2 tmp = tmp * tmp return res if exponent > 0 else 1/res