python中递归函数怎样使用?要注意什么?
Admin 2021-08-20 群英技术资讯 1383 次浏览
python中递归函数怎样使用?很多新手在使用递归函数时,会出现多种问题,对此,这篇文章就给大家分享一下python中递归函数的用法以及要注意的一些问题,有需要的朋友可以参考。
递归函数一定要编写终止条件,否则将产生无限递归。(死循环)
"""
使用代码循环输出故事:从前有座山,山里有座庙...
"""
# ------------while循环 (暂时忽略死循环)---------------
while True:
print("从前有座山,山里有座庙...")
# ---------------通过定义一个方法, 在while循环里面调用实现( 暂时忽略死循环)---------------
def func_story():
print("从前有座山,山里有座庙...")
while True:
func_story()
# ---------------使用递归的方法实现循环---------------
def story():
print("从前有座山,山里有座庙...")
story()
story()
# 报错:RecursionError: maximum recursion depth exceeded while calling a Python object
这里就引申到一个递归的最大深度。
import sys
# 获取最大递归深度
res = sys.getrecursionlimit()
print(res) # 输出:1000
# 递归最大深度:
def func(n):
print(n)
n += 1
func(n)
func(1) # python 3 打印到998就停止打印了
我们可以设置递归的最大深度。但是能够达到的最大深度,跟电脑配置也有关系:
import sys
# 设置递归的深度
sys.setrecursionlimit(10000)
# 递归最大深度:
def func(n):
print(n)
n += 1
func(n)
func(1) # python 3 打印到3221就停止打印了
通过缓存解决最大递归限制的问题:

递归函数示例一:
# 18 20 22 24
def age(n):
if n == 1:
return 18
else:
return age(n-1) + 2
print(age(1)) # 输出:18
print(age(2)) # 输出:20
print(age(3)) # 输出:22
print(age(4)) # 输出:24
递归函数示例二:打印三级菜单
# 我们有一个这样的三级菜单
menu = {
"功能测试": {
"用例管理": {
"添加用例": {},
"删除用例": {},
"复制用例": {}
},
"元素管理": {
"添加元素": {},
"删除元素": {},
"复制元素": {}
},
},
"接口测试": {
"API管理": {
"添加api": {},
"删除api": {},
"复制api": {}
},
"环境管理": {
"添加环境": {},
"删除环境": {},
"复制环境": {}
},
},
}
def query_menu(menu:dict):
"""
一级级查询菜单信息
:return:
"""
# 用户输入q退出
while True:
for k in menu:print(f"当前菜单:{k}")
key = input(">>>").strip()
if key == "q": return key
elif key in menu.keys() and menu[key]:
res = query_menu(menu[key])
if res == "q":
return "q"
query_menu(menu)
输出结果:

关于python递归函数就介绍到这,上述实例具有一定的参考价值,感兴趣的朋友可以参考学习,希望能对大家有帮助,想要了解更多python递归函数的内容,大家可以关注其他文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Python内置函数-id()函数。id() 函数返回对象的唯一标识符,标识符是一个整数。CPython 中 id() 函数用于获取对象的内存地址。
我们在日常工作中,常常会用到需要周期性执行的任务,下面这篇文章主要给大家介绍了关于Python脚本实现定时任务的最佳方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
这篇文章主要介绍了Python数据类型和常用操作,数值数据类型用于存储数值,数据类型不可改变,改变会分配一个新的对象,下文更多相关内容介绍需要的小伙伴可以参考一下
这篇文章给大家分享是关于python 怎样实现json文件保存内容,小编觉得比较有趣,因此分享给大家作参考。接下来我们会使用到json.dump()和递归思想,感兴趣的朋友往下看。
这篇文章主要介绍了python的自变量选择(所有子集回归,后退法,逐步回归),文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008