Leetcode 50. Pow(x, n) 快速幂

举报
陈沧夜 发表于 2022/05/01 00:30:17 2022/05/01
【摘要】 50. Pow(x, n)   实现 pow(x, n) ,即计算 x 的 n 次幂函数。 示例 1: 输入: 2.00000, 10输出: 1024.00000 示例 2: 输入: 2.10000, 3输出: 9.26100 示例 3: 输入...

50. Pow(x, n)

 

实现 pow(xn) ,即计算 x 的 n 次幂函数。

示例 1:


   
  1. 输入: 2.00000, 10
  2. 输出: 1024.00000

示例 2:


   
  1. 输入: 2.10000, 3
  2. 输出: 9.26100

示例 3:


   
  1. 输入: 2.00000, -2
  2. 输出: 0.25000
  3. 解释: 2-2 = 1/22 = 1/4 = 0.25

说明:

  • -100.0 < x < 100.0
  • n 是 32 位有符号整数,其数值范围是 [−231, 231 − 1] 。 

这个题目需要使用快速幂解答:

对于 a^{b} 有:

当 b 为偶数时:

a^{b} = a^{b/2} * a^{b/2}

当 b 为奇数时:

a^{b} = a * a^{b-1}

由上式递归得以下解法:


  
  1. class Solution(object):
  2. def myPow(self, x, n):
  3. """
  4. :type x: float
  5. :type n: int
  6. :rtype: float
  7. """
  8. if n<0:
  9. x = 1/x
  10. n = -n
  11. if n == 0:
  12. return 1
  13. elif n ==1:
  14. return x
  15. else:
  16. if n % 2 == 0:
  17. return self.myPow(x,n/2)**2
  18. else:
  19. return self.myPow(x,n-1)*x

 

文章来源: blog.csdn.net,作者:沧夜2021,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/CANGYE0504/article/details/89633007

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。