特点:

1.函数在调用阶段直接或间接的又调用自己

2.递归函数不需要考虑循环的次数,只需把握结束的条件

# 查看递归深度:1000

  1. func(1)
  2. import sys
  3. print(sys.getrecursionlimit()) # 不是很精确

1.递归死循环:

  1. def index():
  2. print("这是第一个函数")
  3. login()
  4. def login():
  5. print("这是第二个函数")
  6. index()
  7. index()

2.函数的递归分为两个阶段:

  1.回溯:重复的过程,一层层降低难度

  2.递推:一层层往回推导的过程

 

  1. 要求:
    第一个人18岁,第二个人比第一个人大两岁,第三个人比第二个人大两岁,第四个人比第三个人大两岁。。。
    age(5)=age(4)+2
    age(4)=age(3)+2
    age(3)=age(2)+2
    age(2)=age(1)+2
    age(1)=18

 

  1.  
  1. def age(n):
  2. if n == 1:
  3. return 18
  4. return age(n-1) + 2
  5. res = age(5) # 第五个人的年龄
  6. print(res)

 3.递归使用的例子:依次打印列表中的数据

复杂度降低:列表越来越短

递归函数:

  1. l = [1 ,[2 ,[3 ,[4 ,]]]]
  2. def main(l):
  3. for i in l:
  4. if type(i )is int: # 判断是否为整型
  5. print(i)
  6. else:
  7. main(i)
  8. main(l)

 

版权声明:本文为guyouyin123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/guyouyin123/p/11183606.html