Python遞歸函數介紹
阿新 • • 發佈:2018-03-04
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 1819 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遞歸函數介紹