函数的递归

一、什么是函数的递归?

  即:函数在调用截断直接或间接的又调用自身。

  听起来有点绕~~~即函数内部套用自己,进而循环。但学while了解,写程序要避免写死循环,因为死循环会增加CPU运行负荷,严重造成死机。

  那为什么会用到函数递归呢???

二、函数递归运用的场景:

   1、无限大列表,套列表,再套列表... 循环打印

    l = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,]]]]]]]]]]]]]

    老方法我们也可以推断出来,但是太繁琐,如果列表再大一些就无能为力

函数的递归函数的递归
l = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,]]]]]]]]]]]]]

for i in l:    #  推导思路
    if type(i) is int:
        print(i)
    else:
        for item in i:
            if type(item) is int:
                print(item)
            else:
                for j in item:
                    if type(item) is int:
                        print(item)
                    else:
                        .......  # 依次类推
View Code

    于是可以用于函数的递归轻松解决

函数的递归函数的递归
l = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,]]]]]]]]]]]]]

def get_num(l):
    for i in l:
        if type(i) is int:
            print(i)
        else:
            get_num(i)

get_num(l)
l1 = []
for i in l1:
    print(i)
#输出结果依次1 2 3...11 12 13
View Code

三、递归了解

  函数递归分为两个阶段

   1、回溯:就是一次次重复的过程,这个重复的过程必须建立在每一次重复问题的复杂度都应该下降直到有一个最终的结束条件

   2递推:一次次往回推导的过程

   ps:递归函数不要考虑循环的次数 只需要把握结束的条件即可

函数的递归