刷题--数值的整数次方

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

考虑指数的正负,底数是否为0等情况。0的0次方在数学上是没有意义的,因此无论输出0还是1都是可以接受的。
当指数为负数时,我们可以先对指数求绝对值,然后算出次方的结果之后再取倒数。特殊情况:底数为0,指数为负,0不能作为除数。
假设我们的目标是求出一个数字的32次方,如果我们已经知道了它的16次方,那么只要在16次方的基础上再平方一次就可以了。而16次方是8次方的平方,以此类推。
Tip:用右移运算符代替除以2,用位与运算符代替求余运算符,位运算的效率比乘除法及求余运算的效率要高很多。

# -*- coding:utf-8 -*-
class Solution:
    def Power(self, base, exponent):
        # write code here
        flag = False
        if base == 0 and exponent < 0:
            flag = True
            return 0

        n = abs(exponent)
        if n == 0:
            return 1
        elif n == 1:
            return base
        else:
            result = self.Power(base, n >> 1)
            result *= result

            #  若为奇数
            if n & 1 == 1:
                result *= base

            if exponent < 0:
                return 1 / result
            else:
                return result
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值