Python数值的整数次方
如果采用常规解法,需要注意的地方:当指数为负数的时候;当底数为零且指数为负数的情况;在判断底数base是不是等于0的时候,不能直接写base==0, 因为计算机内表示小数时有误差,只能判断他们的差的绝对值是不是在一个很小的范围内。如果采用递归解法,当n为偶数, an = an/2 an/2,当n为奇数, an = a(n-1)/2 a(n-1)/2 * a,利用右移一位代替除2运算,利用 &1 判断是否为奇数。同时需要注意递归终止条件,exponent = 1的话,return base,exponent = -1的话,return 1.0/base。再次提醒!必须写成 1.0/base,否则 1/base,返回一个integer 0!
- '''
- 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
- '''
-
- '''
- 需要注意的地方:
- 当指数为负数的时候
- 当底数为零切指数为负数的情况
- 在判断底数base是不是等于0的时候,不能直接写base==0, 因为计算机内表示小数时有误差,只能判断他们的差的绝对值是不是在一个很小的范围内
- '''
-
- '''
- 当n为偶数, a^n = a^(n/2) * a^(n/2)
- 当n为奇数, a^n = a^((n-1)/2) * a^((n-1)/2)) * a
- 利用右移一位运算代替除以2
- 利用位与运算代替了求余运算法%来判断一个数是奇数还是偶数
- 优化代码速度
- '''
- class Solution:
- def Power(self, base, exponent):
- if exponent == 0:
- return 1
- if exponent == 1:
- return base
- if exponent == -1:
- return 1/base
-
- result = self.Power(base, exponent >> 1)
- result *= result
- if (exponent & 0x1) == 1:
- result *= base
- return result
-
- S = Solution()
- print(S.Power(5, -10))
解压密码: detechn或detechn.com
免责声明
本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。
本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。