递归函数的基本原理及应用

这篇博客探讨了递归函数可能导致的无限循环问题,如`f_01()`的调用。同时,通过示例解释了递归深度限制,当超过默认的1000次递归时会引发`RecursionError`。文章还介绍了斐波那契数列的实现,包括直接递归和迭代优化方法,如`feibo_01()`和`feibo_02()`。此外,还展示了如何遍历目录和文件,以及计算斐波那数列的高效方法。
摘要由CSDN通过智能技术生成
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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值