[python] 递归 recursion

两盒软妹~` 提交于 2019-11-27 09:47:35
  • 递归 : 函数调用自己的过程
    • 细节:
      • 存在递推关系  : 向下调用 ,向上回溯
      • 要有临界值 (结束条件)

 

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

  

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)
----执行结果----
吓得我抱起了抱着抱着抱着抱着抱着抱着我的小鲤鱼的我的我的我的我的我的我

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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!