位运算-012-数值的整数次方

文章目录

题目描述

给定一个double类型的浮点数baseint类型的整数exponent。求baseexponent次方。

保证baseexponent不同时为0

分析

  • 解法一: 单层循环,时间复杂度O(abs(exponent))。
  • 解法二:利用动态规划思想,递归实现。时间复杂度O(logn)。

a n = { a ( n / 2 ) a ( n / 2 ) , n a ( 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
发布了219 篇原创文章 · 获赞 85 · 访问量 14万+

猜你喜欢

转载自blog.csdn.net/z_feng12489/article/details/103354121
今日推荐