菜鳥每天練習 之 遞歸算法

    遞歸算法是把問題轉化爲規模縮小了的同類問題的子問題。然後遞歸調用函數(或過程)來表示問題的解。遞歸過程一般通過函數或子過程來實現。 遞歸算法:在函數或子過程的內部,直接或者間接地調用自己的算法。

 

 

遞歸算法解決問題的特點:

  (1) 遞歸就是在過程或函數裏調用自身。

  (2) 在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱爲遞歸出口。

  (3) 遞歸算法解題通常顯得很簡潔,但遞歸算法解題的運行效率較低。所以一般不提倡用遞歸算法設計程序。

  (4) 在遞歸調用的過程當中系統爲每一層的返回點、局部量等開闢了棧來存儲。遞歸次數過多容易造成棧溢出等。所以一般不提倡用遞歸算法設計程序。

 

 

 

遞歸算法要求

  遞歸算法所體現的重複一般有三個要求:

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

  二是相鄰兩次重複之間有緊密的聯繫,前一次要爲後一次做準備(通常前一次的輸出就作爲後一次的輸入)

三是在問題的規模極小時必須用直接給出解答而不再進行遞歸調用,因而每次遞歸調用都是有條件的(以規模未達到直接解答的大小爲條件),無條件遞歸調用將會成爲死循環而不能正常結束。

 

 

象棋遊戲程序採用的就是遞歸算法

示例1:計算數組{1,1,2,3,5,8.......} 第30位值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章