位运算-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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章