python之遞歸實現


一、遞歸函數

概念:遞歸算法是一種直接或者間接的調用自身算法的過程。在計算機編寫程序中,遞歸算法對解決一大類問題是十分有效的。

特點:

①遞歸就是在過程或者函數里調用自身。

②在使用遞歸策略時,必須有一個明確的遞歸條件,稱為遞歸出口。

③遞歸算法解題通常顯得很簡潔,但遞歸算法解題的效率較低。所以一般不倡導使用遞歸算法設計程序。

④在遞歸調用的過程當中系統的每一層的返回點、局部變量等開辟了棧來存儲。遞歸函數次數過多容易造成棧溢出等。

   所以一般不倡導用遞歸算法設計程序。

要求:

遞歸算法所體現的"重復"一般有三個條件:

①每次在調用規模上都有所縮小(通常是減半)。

②相鄰兩次重復之間有緊密的聯系,前一次要為后一次做准備(通常前一次的輸出就作為后一次的輸入)。

③在問題的規模極小時必須用直接接觸解答而不再進行遞歸調用,因而每次遞歸調用都是有條件的(以規模未達到直接解答的大小為條件),

   無條件的遞歸調用將會成為死循環而不能正常結束。

 1 """非遞歸方式呈現"""
 2 sum = 0
 3 for obj in range(1,101):
 4     sum+=obj
 5 print sum
 6 
 7 """"1+2+3+...+100"""
 8 def foo(n):
 9     if n>0:return n+foo(n-1)
10     if n<=0:return 0
11 print foo(100)
12 
13 """階乘"""
14 def fac(n):
15     if n==0 or n==1:
16         return 1
17     else:
18         return n*fac(n-1)
19 print fac(10)   

遞歸算法一般用於解決三類問題:
(1)數據的定義是按遞歸定義的。(比如Fibonacci函數)
(2)問題解法按遞歸算法實現。(回溯)
(3)數據的結構形式是按遞歸定義的。(比如樹的遍歷,圖的搜索,二分法查找等)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM