重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Python标准库math中用来求幂运算的函数是pow(x,y)
吉县网站制作公司哪家好,找创新互联!从网页设计、网站建设、微信开发、APP开发、响应式网站设计等网站项目制作,到程序开发,运营维护。创新互联从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选创新互联。
pow(x,y)函数和x**y是等效的,都是计算x的y次方
用法:
import math
print(math.pow(4,2))
问题:求 ,为了简化,假设x和n都是大于等于0的整数:
一般来说 如果直接使用遍历的话,需要运行n次,记为:时间复杂度O(n), Python 实现如下:
返回结果1024是正确的,为了方便观察遍历运算了几次,我们把函数里添加一个计数的变量,每次遍历让他+1:
运行后会依次输出:10 20 30,符合时间复杂度是O(n)
现在来优化一下这个算法:
根据中小学学到的数学知识,我们可以了解到:
易得:
n为偶数时
n为奇数时
转化为Python,使用递归后 可以写出以下内容:
输出结果为:
该算法的时间复杂度为O( )
Python中幂运算可以使用**表示,Python中三次方可以表示为x**3,即为x的3次方。
**是Python中算术运算符表示幂运算,Python中算术运算符还有加、减、乘、除、取模、取整除。
Python自定义函数在运行时,最初只是存在内存中,只有调用时才会触发运行。
python中,想要表示a的b次方时,有两种方法:
1,math.pow()这个内置函数
2,**运算符
这两种方法效果是一样的,但是当
b为分数,a为负数:当幂运算符的底数为负数、幂为分数时,Python会抛出ValueError: negative number cannot be raised to a fractional power异常,
这时有两种方法可以解决此问题:
1,底数a正负均可不影响你的算法的话,加一个绝对值就行了即abs(a);
2,如果底数a必须是正、或必须是负的话,需要采用复数进行运算。因此凡是遇到幂为分数的项,都将底数用complex()转换为复数。
推荐学习《python教程》。