位運算-012-數值的整數次方

題目描述

給定一個double類型的浮點數baseint類型的整數exponent。求baseexponent次方。

保證baseexponent不同時爲0

分析

  • 解法一: 單層循環,時間複雜度O(abs(exponent))。
  • 解法二:利用動態規劃思想,遞歸實現。時間複雜度O(logn)。

an={a(n/2)a(n/2),na(n//2)a(n//2)a,n a^n=\left\{ \begin{aligned} &a^{(n/2)} * a^{(n/2)}, &n爲偶數 \\ &a^{(n//2)} * a^{(n//2)} *a,&n爲奇數 \\ \end{aligned} \right.

代碼

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exp):
        if exp < 1:
            return 1/self.getPower(base, -exp)
        else:
            return self.getPower(base, exp)
        
    def getPower(self, base, exp):
        res = 1
        for i in range(exp):
            res *= base
        return res
# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exp):
        if exp < 1:
            return 1/self.getPower(base, -exp)
        else:
            return self.getPower(base, exp)
        
    def getPower(self, base, exp):
        if exp == 0:
            return 1
        elif exp == 1:
            return base
        
        res = self.getPower(base, exp>>1)
        res *= res
        if exp & 1:
            res *= base
        return res
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章