劍指offer系列-面試題-16 - 數值的整數次方 (python)

1. 題目

實現函數double Power(double base, int exponent),求base的exponent次方。不得使用庫函數,同時不需要考慮“大數問題“。

2. 解題思路

2.1 普通思路

直接循環做乘法。

2.2 活用數學知識

當exponent爲偶數時:x ** n = (x ** 2)** (n//2)
當exponent爲奇數時:x ** n = x * (x ** (n-1)),此時的n-1爲偶數,用上面的方法

3. 代碼實現

3.1 普通思路

class Solution:
	def myPow(self, x, n):
		result = 1
		flag = 0 # 表示n爲正整數
		if n < 0:
			flag = 1 # 表示n爲負整數
			n = -1 * n 
		for _ in range(n):
			result *= x
		if flag:
			return 1 / result
		return result
		

3.2 活用數學知識

class Solution:
	def myPow(self, x, n):
        if n < 0:
            return 1 / self.myPow(x, -1 * n)
        if n == 0:
            return 1
        if n == 1:
            return x
        if n & 1: # exponent爲奇數
            return x * self.myPow(x, n-1) 
        return self.myPow(x * x, n>>1)

4. 總結

做算法,數學知識還是挺重要的。可是吧,數學這東西不用就忘了,所以還是要多刷題,保持住才行。

5. 參考文獻

[1] 劍指offer叢書
[2] 劍指Offer——名企面試官精講典型編程題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章