递归函数的限制

本文探讨了递归函数在达到最大递归深度时引发的RecursionError,以及递归过程中内存占用的变化。通过实例展示了即使在return语句后,递归函数的当前状态也不会立即释放,从而影响递归层数和时空限制。通过对代码的修改和内存占用的观察,揭示了递归函数在不同参数变化下的内存行为。
摘要由CSDN通过智能技术生成
i=900
def a():
    global i
    i-=1
    s="我写这个函数是因为想到了些问题,例如之前写的递归函数,都是在函数中间,调用自身,获取数值,而这个函数,我其实是为了方便,如果遇到一个问题,就改变运行参数,于是需要重新调用这个函数,在新的参属下。其实这个用goto很爽,但是一方面是没有学到,另一方面goto貌似是个邪道,于是想尝试自己解决下。但即便是最后一句,使用的是return,那也算是递归?也就是说,调用新的一次函数的同时,当前函数没有被释放吗?"
    if i==0:
        input()
        return
    return a()
a()

4812KB内存占用,添加了S后,4896

问题一,递归深度限制

import sys   
sys.setrecursionlimit(100000) #例如这里设置为十万  

解决报错RecursionError: maximum recursion depth exceeded in comparison

我写这个函数是因为想到了些问题,例如之前写的递归函数,都是在函数中间,调用自身,获取数值,而这个函数,我其实是为了方便,如果遇到一个问题,就改变运行参数,于是需要重新调用这个函数,在新的参属下。其实这个用goto很爽,但是一方面是没有学到,另一方面goto貌似是个邪道,于是想尝试自己解决下。但即便是最后一句,使用的是return,那也算是递归?也就是说,调用新的一次函数的同时,当前函数没有被释放吗ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值