python实现n次⽅_python实现pow函数(求n次幂,求n次⽅)实现 pow(x, n),即计算 x 的 n 次幂函数。其中n为整数。pow函数的实现——leetcode
解法1:暴⼒法
不是常规意义上的暴⼒,过程中通过动态调整底数的⼤⼩来加快求解。代码如下:
class Solution:
def myPow(self, x: float, n: int) -> float:
judge = True
if n<0:
n = -n
judge = False
if n==0:
return 1
final = 1 # 记录当前的乘积值
tmp = x # 记录当前的因⼦
count = 1 # 记录当前的因⼦是底数的多少倍
while n>0:
if n>=count:
final *= tmp
tmp = tmp*x
n -= count
count +=1
else:
tmp /= x
count -= 1
return final if judge else 1/final
解法2:根据奇偶幂分类(递归法,迭代法,位运算法)
如果n为偶数,则pow(x,n) = pow(x^2, n/2);
如果n为奇数,则pow(x,n) = x*pow(x, n-1)。
递归代码实现如下:
class Solution:
def myPow(self, x: float, n: int) -> float:
if n<0:
n = -n
return 1/self.help_(x,n)
return self.help_(x,n)
def help_(self,x,n):
if n==0:
return 1
if n%2 == 0: #如果是偶数
return self.help_(x*x, n//2)
# 如果是奇数
return self.help_(x*x,(n-1)//2)*x
迭代代码如下:
class Solution:
def myPow(self, x: float, n: int) -> float:
judge = True
if n < 0:
n = -n
judge = False
final = 1
while n>0:
if n%2 == 0:
x *=x
n //= 2
final *= x
n -= 1
return final if judge else 1/final
其实跟上⾯的⽅法类似,只是通过位运算符判断奇偶性并且进⾏除以2的操作(移位操作)。代码如下:class Solution:
def myPow(self, x: float, n: int) -> float:
judge = True
if n < 0:
n = -n
judge = False
final = 1
while n>0:
if n & 1: #代表是奇数
final *= x
x *= x
n >>= 1 # 右移⼀位
return final if judge else 1/final
类型⼆:求n开⽅
实现 pow(x, n),即计算 x 的 n 次幂函数。其中x⼤于0,n为⼤于1整数。
解法:⼆分法求开⽅
思路就是逐步逼近⽬标值。以x⼤于1为例:
设定结果范围为[low, high],其中low=0, high = x,且假定结果为r=(low+high)/2;
如果r的n次⽅⼤于x,则说明r取⼤了,重新定义low不变,high= r,r=(low+high)/2;
如果r的n次⽅⼩于x,则说明r取⼩了,重新定义low=r,high不变,r=(low+high)/2;
代码如下:
class Solution:
def myPow(self, x: float, n: int) -> float:
# x为⼤于0的数,因为负数⽆法开平⽅(不考虑复数情况)
if x>1:
low,high = 0,x
else:
low,high =x,1
python新手函数while True:
r = (low+high)/2
judge = 1
for i in range(n):
judge *= r
if x >1 and judge>x:break # 对于⼤于1的数,如果当前值已经⼤于它本⾝,则⽆需再算下去if x <1 and judge
if abs(judge-x)<0.0000001: # 判断是否达到精度要求
print(pow(x,1/n)) # pow函数计算结果
return r
else:
if judge>x:
high = r
else:
low = r
⼀个数number的n次幂 python的pow函数
@ ⽬录 解法1:暴⼒法 解法2:根据奇偶幂分类(递归法,迭代法,位运算法) 实现 pow(x, n),即计算 x 的 n 次幂函数.其中n为整数. 链接: pow函数的实现--leetcode. 解 ...
(函数分治法)实现pow函数(x的y次⽅幂)
题⽬:实现pow函数. 题⽬分析:因为⼀个⼀个乘,循环太⼤,参考矩阵连乘问题:对于n=4的话,可以得出x的平⽅,然后平⽅与平⽅相乘.节省计算次数.对于偶数的幂,只要x的平⽅多次递归调⽤即可:对于奇数的 ...
python中的pow(&rpar;函数解释
Python pow() 函数
描述 pow() ⽅法返回 xy(x的y次⽅) 的值. 语法 以下是 math 模块 pow() ⽅法的语法: import math math.pow( x, y ) 内置的 pow() ⽅法po ...
python中的函数
Python 函数 函数是组织好的,可重复使⽤的,⽤来实现单⼀,或相关联功能的代码段. 函数能提⾼应⽤的模块性,和代码的重复利⽤率.你已经知道Python提供了许多内建函数,⽐如print().但你也 ...
【Python之路】第四篇--Python基础之函数
三元运算 三元运算(三⽬运算),是对简单的条件语句的缩写 # 书写格式 result = 值1 if 条件 else 值2 # 如果条件成⽴,那么将 “值1” 赋值给result变量,否则,将“值2” ...
【转】python 内置函数总结(⼤部分)
[转]python 内置函数总结(⼤部分) python 内置函数⼤讲堂 python全栈开发,内置函数 1. 内置函数 python的内置函数截⽌到python版本3.6.2,现在python⼀共为 ...
python内置函数,匿名函数
⼀.匿名函数 匿名函数:为了解决那些功能很简单的需求⽽设计的⼀句话函数 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n ...
Python开发——5&period;函数
⼀.函数的定义 def test(x) "The Function definitions" x += return x def:定义函数的关键字 test:函数名 ():定义形参 ...
随机推荐
Windows下虚拟机安装Mac OS X ----- VM12安装Mac OS X 10.11
Windows下虚拟机安装Mac OS X -– VM12安装Mac OS X 10.11 随着Iphone在国内⼤⾏其道,越来越多的开发者涌⼊iOS开发⼤军 中,但都苦于没有苹果机,本⽂即将介绍WI ...
Mysql 复制⼯具(percona-toolkit)
Mysql 复制⼯具 1.percona-toolkit简介 percona-toolkit是⼀组⾼级命令⾏⼯具的集合,⽤来执⾏各种通过⼿⼯执⾏⾮常复杂和⿇烦的mysql和系统任务,这些任务包括: 检 ...
HTML5程序设计--SVG
SVG(Scalable Vector Graphics):可缩放⽮量图形,⼀种⼆维图形表⽰语⾔. 借助SVG,我们可以实现很多同Canvas API类型的绘制操作,但在Canvas元素上绘制⽂本的时 ...
MYSQL瓶颈
⼀般来说, 在使⽤的时候 性能从某个数值开始.突然⼤⼤下降,说明就到了瓶颈期. mysql 瓶颈有2种,⼀种是 cpu瓶颈  ⼀种是 io瓶颈.cpu瓶颈多是由io引起. ⽽io可以通过  show ...
Java基本语法-----java数组(⼀维数组⼆维数组)
嘿嘿!你们懂的,⼜是图⽚,委屈⼤家了. java数组(⼀维数组⼆维数组) [正在看本⼈博客的这位童鞋,我看你⽓度不凡,谈吐间隐隐有王者之⽓,⽇后必有⼀番作为!下⾯有个"顶"字,你就 ...
[SCOI2015]⼩凸想跑步
题⽬描述 ⼩凸晚上喜欢到操场跑步,今天他跑完两圈之后,他玩起了这样⼀个游戏. 操场是个凸 n 边形, nn 个顶点按照逆时针从 0 ∼n−1 编号.现在⼩凸随机站在操场中的某个位置,标记为p点.将 p ...
maven源码打包
1.打包时附加外部Jar包                      maven-co ...
linux环境java⼊门
1. 安装java开发环境 安装jre和jdk $ sudo apt-get install default-jre$ sudo apt-get install default-jdk
2. 设置环境 ...
docker官⽅⽂档学习-1-Docker for mac安装配置
git回本地误删的⽂件
不⼩⼼把本地的⽂件删除了⼀个? 想从仓库git pull 下拉? 对不起,这是不⾏的,虽然不知道为什么,但是我告诉你怎么回复这个⽂件. ⾸先,我们先⽤git status 看看⼯作区的变化 $ git ...

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。