递归的最大深度为1000层:为了节省内存空间,不要让用户无限使用内存空间。
count = 0
def func():
global count
count += 1
print(count)
func()
print(456)
func()
# 1
# ...
# RecursionError:超过递归最大深度
# 递归的最大深度1000层
sys可以修改最大递归深度:但是根据电脑的不同运行后的上限不同
import sys
sys.setrecursionlimit(10000)
count = 0
def func():
global count
count += 1
print(count)
func()
print(456)
func()
把递归函数 停下来
递归函数怎么停下来
# 递归3次就结束整个函数
count = 0
def func():
global count
count += 1
print(count)
if count == 3:
return
func()
print(456)
func()
# 1
# 2
# 3
# 456
# 456
递归函数要想结束,必须在函数内写一个return,并且return的条件必须是一个可达到的条件
def func(count):
count += 1
print(count)
if divmod(count,10) == (5,3):return
func(count)
func(1)
# 1
# 2
# ...
# 53
# def func(count):
# count += 1
# print(count)
# if count == 5:return 5
# ret = func(count)
# print(count,‘:‘,ret)
# return ret
#
# print(‘-->‘,func(1))
def func(count):
count += 1
print(count)
if count == 5:return 5
return func(count)
print(‘-->‘,func(1))
# 2
# 3
# 4
# 5
# --> 5
练习
计算阶乘
def fin(n):
if n == 1:
return n
else:
return n*fin(n-1)
print(fin(5))
os模块:查看一个文件夹下的所有文件,这个文件夹下还有文件夹,不能用walk
os模块:计算一个文件夹下所有文件的大小,这个文件夹下面还有文件夹,不能用walk
计算斐波那契数列
def fib(n):
if n == 1 or n == 2:
return 1
else:
return fib(n-1)+fib(n-2)
print(fib(6))
三级菜单
menu = {
‘北京‘: {
‘海淀‘: {
‘五道口‘: {
‘soho‘: {},
‘网易‘: {},
‘google‘: {}
},
‘中关村‘: {
‘爱奇艺‘: {},
‘汽车之家‘: {},
‘youku‘: {},
},
‘上地‘: {
‘百度‘: {},
},
},
‘昌平‘: {
‘沙河‘: {
‘老男孩‘: {},
‘北航‘: {},
},
‘天通苑‘: {},
‘回龙观‘: {},
},
‘朝阳‘: {},
‘东城‘: {},
},
‘上海‘: {
‘闵行‘: {
"人民广场": {
‘炸鸡店‘: {}
}
},
‘闸北‘: {
‘火车战‘: {
‘携程‘: {}
}
},
‘浦东‘: {},
},
‘山东‘: {},
}
def threeLM(dic):
while True:
for k in dic:print(k)
key = input(‘input>>‘).strip()
if key == ‘b‘ or key == ‘q‘:return key
elif key in dic.keys() and dic[key]:
ret = threeLM(dic[key])
if ret == ‘q‘: return ‘q‘
threeLM(menu)
原文:https://www.cnblogs.com/szheng/p/13332850.html