python中递归函数怎样使用?要注意什么?
Admin 2021-08-20 群英技术资讯 1354 次浏览
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运行加速有什么方法?对于Python运行的慢问题这里就不多说,下面主要给大家来分享一下python运行加速的几种方式,有需要的朋友可以参考,接下来我们一起看看吧。
这篇文章主要介绍了python-for x in range的用法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
这篇文章主要介绍Python数据类型,在Python学习中,Python数据类型是需要掌握的内容,下文示例具有一定参考学习价值,感兴趣的朋友可以看一看,希望大家阅读完这篇文章能有所收获。
这篇文章主要为大家介绍了PyTorch搭建LSTM实现时间序列负荷预测,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
python 有str object 和 unicode object 两种字符串, 都可以存放字符的字节编码,但是他们是不同的type,这一点很重要,也是为什么
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
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