def f_01():
print("test01")
f_01()
def f_02():
print("test02")
f_01()
Process finished with exit code 1,f_01()函数反复调用自己进入到无限循环, 正常情况下结束应该时with exit code 0。
RecursionError: maximum recursion depth exceeded while calling a Python object
错误的大致意思就是递归超过了最大的深度,python的递归深度是有限制的,默认为1000。当递归深度超过1000时,就会报错。
1def f_01(n):
2 print("test01",n)
3 if n==0:
4 print("over")
5 else:
6 f_01(n-1)
7 print('####',n)
8def f_02():
9 print("test02")
10f_01(5)
注意看over后面 print('####',n)这句中n值的变化
eg1:遍历目录及目录下的文件
def work_file(path):
for i in os.listdir(path):
sub_path =os.path.join(path,i)
if os.path.isdir(sub_path):
work_file(sub_path)
if os.path.isfile(sub_path):
print(sub_path)
work_file('/Users/wh/PycharmProjects/testfuna')
eg2:
def feibo_01(n):
'''
假如斐波那数列的第1位是0,输出斐波那数列的第N位
:param n:
:return:斐波那数列的第N位
'''
if n==1:
'''
假如斐波那数列的第1位是0
'''
return 1
if n==2:
'''
假如斐波那数列的第2位是1
'''
return 1
if n>2:
'''
从第3位开始,第3位的值是前两位的和
'''
return feibo_01(n-2)+feibo_01(n-1)
# print(feibo_01(6))
def feibo_03(n):
l=[1,1]
def feibo_02(n):
'''
假如斐波那数列的第1位是0,输出斐波那数列的前N位
:param n:
:return: 斐波那数列的前N位
'''
i, a, b = 0, 1, 1
while i <= n:
a, b = b, a + b
i += 1
yield b
for i in feibo_02(n):
l.append(i)
return l[0:n:1]
# print(feibo_03(6))