首页 > 编程语言 >Python——第四章:函数的递归调用

Python——第四章:函数的递归调用

时间:2023-11-30 16:55:06浏览次数:47  
标签:调用 递归 Python 123 func line 第四章

递归:  函数自己调用自己

递归如果没有任何东西拦截的话. 它默认就是一个死循环

def func()
    func()
    
func()

因此递归调用的时候需要有判断,来退出循环

def func()
    if xxxxx:
        return
    func()
    
func()

这里就用到了return来充当循环中的break作用。

如果执意要进行递归调用,还没有判断的话,真实调用的最后会出现报错

def func():
    print(123)
    func()

func()

#运行结果,最后部分
123
123
123
123
123
123
Traceback (most recent call last):
  File "D:\Python\递归.py", line 5, in <module>
    func()
  File "D:\Python\递归.py", line 3, in func
    func()
  File "D:\Python\递归.py", line 3, in func
    func()
  File "D:\Python\递归.py", line 3, in func
    func()
  [Previous line repeated 994 more times]
  File "D:\Python\递归.py", line 2, in func
    print(123)
RecursionError: maximum recursion depth exceeded while calling a Python object    #最大递归深度调用python的对象

每次函数在调用的时候都会划分出局部作用域,因此递归调用是有系统默认最大值的。

 

python默认是有递归深度的限制的。默认的最大递归深度是1000,但是永远不能达到1000,我们也可以调整递归最大深度,但是也永远不能达到设置的那个值

import sys

print(sys.getrecursionlimit())
sys.setrecursionlimit(2000)

如果你的代码递归次数到达了最大深度1000,那你的算法基本上就有问题了,一定要重视,要调整你的代码。

循环可能是你更好的出路。

标签:调用,递归,Python,123,func,line,第四章
From: https://www.cnblogs.com/Magiclala/p/17867771.html

相关文章

  • 函数与递归
    函数定义函数是一组一起执行一个任务的语句。每个C程序都至少有一个函数,即主函数 main() 内置函数C标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。可以参考的函数文档网站有:    cplusp......
  • 代码随想训练营第四十五天(Python)| 70. 爬楼梯 (进阶)、322. 零钱兑换 、 279.完全平方数
    70.爬楼梯(进阶)1、使用01背包解法classSolution:defclimbStairs(self,n:int)->int:#dp数组代表爬上第i阶有dp[j]种方法dp=[0]*(n+1)dp[0]=1m=2#排列先背包后物品foriinrange(n+1):......
  • Python---GUI----Tkinter
    PythonGUI编程(Tkinter)Python提供了多个图形开发界面的库,几个常用PythonGUI库如下:Tkinter: Tkinter模块(Tk接口)是Python的标准TkGUI工具包的接口.Tk和Tkinter可以在大多数的Unix平台下使用,同样可以应用在Windows和Macintosh系统里。Tk8.0的后续版本......
  • python的websockets库
    安装pipinstallwebsockets分为客户端和服务端两部分  服务端一般与异步的库一起用因为客户端不可能只服务一个客户所以要用异步处理多个客户 以asyncio示例 fromwebsockets.serverimportserveimportwebsocketsimportasyncioasyncdefstart(ws,path):#......
  • Rust std fs 比 Python 慢!真的吗!?
    作者:XuanwoDatabendLabs成员,数据库研发工程师https://github.com/xuanwo我即将分享一个冗长的故事,从OpenDAL的op.read()开始,以一个意想不到的转折结束。这个过程对我来说非常有启发性,我希望你也能感受到。我会尽力重现这个经历,并附上我一路学到的教训。让我们开始吧!所......
  • python开发之个微群聊机器人开发
    请求URL:http://域名地址/inviteChatRomMember请求方式:POST请求头Headers:Content-Type:application/jsonAuthorization:login接口返回参数:参数名必选类型说明wId是string登录实例标识chatRomI是String群userList是String群成员微信id,多个已","分割返回数据:参数名类型说明codestring1......
  • python提取图片中文字
    一.安装tesseract-ocr1.1tesseract-ocr下载下载地址:Indexof/tesseract(uni-mannheim.de)1.2完成tesseract-ocr安装,记住安装路径用于配置环境变量1.3配置环境变量将tesseract-ocr的安装路径添加到环境变量的系统变量(PATH)增加一个TESSDATA_PREFIX变量名,变量值还是安装路......
  • 代码随想训练营第四十四天(Python)| 完全背包、518. 零钱兑换 II 、377. 组合总和 Ⅳ
    [完全背包]有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。1、先遍历物品再遍历背包defall_bag(weight,value,bag_weight):dp=[0]*......
  • python flask下载功能
    前言flask下载功能一、约定要下载文件绝对路径:/tmp/flask_web/download/test.tar.gzpy主程序:/tmp/flask_web/main.py二、main.py内容@app.route("/down/<path:filename>",methods=['GET','POST'])defdownload_file(filename):try:#......
  • Rust std fs 比 Python 慢!真的吗!?
    作者:XuanwoDatabendLabs成员,数据库研发工程师https://github.com/xuanwo我即将分享一个冗长的故事,从OpenDAL的op.read()开始,以一个意想不到的转折结束。这个过程对我来说非常有启发性,我希望你也能感受到。我会尽力重现这个经历,并附上我一路学到的教训。让我们开始吧!......