欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

剑指offer --- 数值的整数次方

程序员文章站 2022-06-17 17:09:00
...

本文算法使用python3实现


1 题目描述:


  给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
  时间限制:1s;空间限制:32768K

剑指offer --- 数值的整数次方

3 程序代码:

(1)方法一

class Solution:
    def Power_1(self, base, exponent):
        # 普通算法
        # 对0进行界定
        if base > -1e-7 and base < 1e-7:
            return 0
        if exponent == 1:
            return base
        if exponent == 0:
            return 1
        exp = abs(exponent)
        res = 1.0
        for i in range(exp):
            res *= base
        if exponent > 0:
            return res
        else:
            return 1/res

(2)方法二:

class Solution:
    def Power_2(self, base, exponent):
        # 高效算法
        if base > -1e-7 and base < 1e-7:
            return 0
        if exponent == 1:
            return base
        if exponent == 0:
            return 1
        exp = abs(exponent)
        ans = self.Power_2(base, exp >> 1)
        ans = ans * ans * 1.0
        if exp & 1 == 1 :
            # 如果幂为奇数
            ans = ans * base
        if exponent < 0:
            return 1/ans 
        return ans
相关标签: 算法