函数递归

函数递归

函数递归指的是重复的“直接调用或者间接调用”函数本身,是一种函数嵌套调用的表现形式

直接调用:函数内置,直接调用函数本身

num = 1
def func():
    global num
    print("递归深度", num)
    num +=1
    func()

间接调用:两个函数之间相互调用间接造成递归

num = 1
def goo():
    global num
    print('from goo...',num)
    num += 1
    func()
def func():
    global num
    print('from func...',num)
    num += 1
    goo()

递归深度:python中有递归深度,限制递归次数,一般在998左右,每一台的操作系统会根据硬盘来设置默认递归深度

获取递归深度:先调用 获取操作系统资源的模块 import sys,然后sys.getrecursionlimit()查看当前递归深度

设置递归深度:先调用 import sys,然后设置sys.setrecursionlimit(深度值)

单纯的递归调用是没有任何意义的,想要递归有意义必须遵循的两个条件:

  • 递推:重复的执行,每一次执行都拿到一个更接近于结果的结果,要有一个终止条件
  • 回溯:当递推找到终止条件后开始一步一步往上回溯,得到每一个结果

img

age5 == age4 + 2
age4 == age3 + 2
age3 == age2 + 2
age2 == age1 + 2
age1 == 18  # 回溯递推的结果
def age(n):
    if n == 1:
        return 18
    # 这里写return才能实现回溯
    return age(n - 1) + 2

res = age(5)
print(res)  # 26

posted @   Mr沈  阅读(168)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示