04_09、递归函数

一、递归函数

  1、关于递归函数

    递归函数是直接或间接的调用自己

    由此会使函数不间断的调用自己,所以递归一定要有结束条件

    默认的递归深度(循环次数)是1000次

    递归深度的查看和修改方式

import sys  # 引入sys模块

print(sys.getrecursionlimit())  # 查看最大递归深度
# 结果为1000
sys.setrecursionlimit(2000)  # 修改最大递归深度
print(sys.getrecursionlimit())
# 结果为2000

  2、简单案例

count = 1


def index():
    global count
    count += 1
    print('from index', count)
    index()


index()

  3、实际应用

# 有5个人,如果A比B大2岁,B比C大2岁,以此类推,现知E18岁,求A的年纪
# 思路:a=b+2  b=c+2  c=d+2  d=e+2 e=18
# 当age=18的时候,循环4次age=age+2
# 或者定义一个函数,让函数返回值依然为该函数名,完成函数递归,代替循环
def age(n):  # 定义一个函数
    if n == 1:
        return 18  # 设置结束条件

    return age(n - 1) + 2  # 返回值的名字依次减1,值依次加2


print(age(5))  # 打印出n=5时的结果

  4、应用进阶

# 要求把列表内的数值全部拆分出来
l = [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, ]]]]]]]]]]


# 分析:列表是整型+列表额嵌套模式
# 思路:如果是整型,直接打印输出;如果不是整型(也就是列表格式),循环
# 具体方式:定义一个递归函数,如果是整型,直接打印输出
# 如果是列表,递归循环如果
def get_num(l):
    for i in l:
        if type(i) is int:
            print(i)
        else:
            get_num(i)


get_num(l)

 

 

posted @ 2022-02-07 23:39  三三得九86  阅读(100)  评论(0)    收藏  举报