python——函数的递归调用

一、递归的定义

函数的递归调用:递归调用是函数嵌套调用的一种特殊形式,函数在调用时,直接或间接调用了自身,就是递归调用
python对递归调用循环的调用的次数有限制,最大深度为1000次。
# 修改次数,但一般不推荐
import sys
sys.setrecursionlimit(2000)    
print(sys.getrecursionlimit())

案例:直接调用本身

def f1():
    print('from f1')
    f1()
f1()

简介调用本身

def f1():
    print('from f1')
    f2()

def f2():
    print('from f2')
    f1()
f1()

二、用函数来实现的循环

函数的递归调用本质就是一个循环过程
方式一:while循环、for循环
while True:
    print(111)
    print(222)
    print(333)

方式二:递归循环
def f1():   
    print(111111)
    print(22222)
    print(33333)
    f1()

f1()

三、结束递归

递归调用不应该无限调用下去,必须在满足某种条件下,结束递归
n = 0
while n < 10:
    print(n)
    n += 1

def func(n):
    if n == 10:
        return
    print(n)
    n += 1
    func(n)

func(0)

四、递归的2个阶段

1、回溯:一层一层调用下去

2、递推:一层一层向上返回

age(5)=age(4)+10
age(4)=age(3)+10
age(3)=age(2)+10
age(2)=age(1)+10
age(1)=18

n>1 age(n)=age(n-1)+10

n=1 age(1)=18
def age(n):
    if n == 1:
        return 18
    return age(n-1)+10
res=age(5)
print(res)

# 结果:58

五、递归的应用

l=[1,[2,[3,[4,[5,[6,[7]]]]]]]
def func(l):
    for x in l:
        if type(x) is not list:
            # x不是列表
            print(x)
        else:
            # x是列表
            # 重新调用本段代码,传入一个新列表x
            func(x)

func(l)
posted @ 2020-12-09 16:52  岳岳-  阅读(508)  评论(0编辑  收藏  举报