[python] 递归 recursion

  • 递归 : 函数调用自己的过程
    • 细节:
      • 存在递推关系  : 向下调用 ,向上回溯
      • 要有临界值 (结束条件)

 

  • 我最深刻的理解(藏在注释里哦):

  

1 def digui(num):
2     print(str(num)+'*')
3     if num > 0 : # 这里是临界值
4         digui(num - 1) # 这里调用本身的函数
5     else:
6         print('='*20)
7     print(num) # 逐次返回上一级的调用时会被打印
8 
9 digui(3)

----执行结果----

3*
2*
1*
0*
====================
0
1
2
3

 

  • 栗子们: 注释! 看注释!
 1 # 斐波那契数列 通过递归
 2 # 数学定义 : 1,1,2, 3, ..., f(n)=f(n-2)+f(n-1)
 3 
 4 def fi(n):
 5     if n == 1 or n == 2:
 6         return 1
 7     m = fi(n-2) + fi(n-1)
 8     return m
 9 
10 a =  fi(20)
11 print(a)

----执行结果----
6765
# 用for循环数一遍 斐波那契

n = 20
ls = [1,1]
for i in range(1,n+1):
    if i == 1 or i == 2:
        fi = 1
        print(fi)

    else:
        fi = ls[i-3] + ls[i-2]
        print(fi)
        ls.append(fi)
----执行结果----

1
1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765



1
def miao(n): 2 if n > 0: 3 print('抱着',end='') 4 miao(n-1) 5 elif n == 0: 6 print('抱着',end='') 7 print('我的小鲤鱼',end='') 8 print('的我',end='') 9 10 return None 11 12 print('吓得我抱起了',end='') 13 miao(5)

----执行结果----


吓得我抱起了抱着抱着抱着抱着抱着抱着我的小鲤鱼的我的我的我的我的我的我

↑ 看到的别人的递归图图  无论如何狗子都超可爱!!!

posted @ 2019-08-15 11:44  鸟茫然  阅读(284)  评论(0编辑  收藏  举报