1. 程式人生 > >Python遞歸函數介紹

Python遞歸函數介紹

author 工作 ret pri style mail 自己 調用 color

                  Python遞歸函數介紹

                                作者:尹正傑

版權聲明:原創作品,謝絕轉載!否則將追究法律責任。

一.遞歸函數的工作原理

1.案例展示

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
5 #EMAIL:[email protected] 6 7 8 import sys 9 # print(dir(sys)) 10 # sys.setrecursionlimit(1000000) #修改默認遞歸調用的次數,不建議修改! 11 # print(sys.getrecursionlimit()) #查看遞歸函數的最大可以調用的次數,默認是可以調用1000次; 12 13 14 def Age(n): 15 if n == 5: #指定明確的遞歸結束條件; 16 return 18 17 return Age(n+1)+2 18
19 20 print(Age(1)) 21 22 """ 23 遞歸函數: 24 1>.遞歸函數必須要有一個明確的結束條件 25 遞歸函數效率低,需要在進入下一次遞歸是保留當前的狀態,解決方法是尾遞歸,即在函數的最後一步 26 (而非最後一行)調用自己,但是Python又沒有尾遞歸,且對遞歸層級做了限制。 27 2>.每次進入更深一層遞歸時,問題規模相比上次遞歸都應有所減少; 28 3>.遞歸效率不高,遞歸層次過多會導致棧溢出; 29 30 """ 31 32 33 34 35 #以上代碼執行結果如下:
36 26

2.圖解遞歸函數

技術分享圖片

二.小試牛刀

 1 #!/usr/bin/env python
 2 #_*_coding:utf-8_*_
 3 #@author :yinzhengjie
 4 #blog:http://www.cnblogs.com/yinzhengjie/tag/python%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E7%BB%B4%E4%B9%8B%E8%B7%AF/
 5 #EMAIL:[email protected]
 6 
 7 
 8 
 9 
10 def PiercingEye(List):
11     for item in List:
12         if isinstance(item, list):
13             PiercingEye(item)
14         else:
15             print(item)
16 
17 
18 ListNum = [1, [2, 3, [4, [5, 6, 7, [8, 9]]]]]
19 PiercingEye(ListNum)
20 
21 
22 
23 
24 #以上代碼執行結果如下:
25 1
26 2
27 3
28 4
29 5
30 6
31 7
32 8
33 9

Python遞歸函數介紹