遞歸思想

遞歸的含義:

????????就是一個函數(shù)內部再調用該函數(shù)本身的一種情形,這是語法形式上的。

具體場景是:

????????如果要解決的“最終問題”,可以根據比該問題“小一級”的問題的答案而得到解決,

并且,該“小一級”的問題,還可以根據比其“更小一級”的問題的答案而得到解決,

以此類推,直到“最小一級”的問題。如果最小一級問題已知,則最終的問題也就解決了。

危險:

????????如果函數(shù)在執(zhí)行的過程中沒有一個“不再調用”的終結機制,那么就會出現(xiàn)“停不下來”的現(xiàn)象。

原理:

????????要想得到最大(最終)問題(可以稱為n級)的答案,如果能得到n-1級的答案,則可以“輕松算出”;并且,還能夠知道這些問題中的“最小一級”的答案。

則這種情況,就可以使用遞歸思想來解決:從最大一級開始,一級一級往小的方向找。

遞歸調用過程的代碼演示;

function ? ?f1($n){

? ? ? ? ? ?$n++;

? ? ? ? ? ? echo ? " $n " ;

? ? ? ? ? ? if($n < 5){

? ? ? ? ? ? ? ? ? ? f1($n);

? ? ? ? ? ? }

? ? ? ? ? ? echo ?" $n " ;

}

f1(1);

輸出結果及分析:

舉例1:計算5的階乘

數(shù)學上階乘可以這樣來描述,一個數(shù)n的階乘,是n-1的階乘,乘以n的結果!假設,我們有一個函數(shù) fn(),它可以計算任意正整數(shù)n的階乘;

舉例2:

計算斐波那契數(shù)列第10項的值:1, 1, 2, 3, 5, 8, 13, 21, ......

假設有個函數(shù),可以計算斐波那契數(shù)列的第n項:

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 第八章 遞歸(recursion) 8.1 導語 因為一些指導者傾向于先教遞歸作為第一個主要的控制結構,本章會以另...
    geoeee閱讀 1,539評論 0 5
  • 編寫一個遞歸函數(shù),實現(xiàn)將輸入的任意長度的字符串反向輸出的功能。例如輸入字符串ABC,則輸出字符串CBA。代碼實現(xiàn):...
    AceKitty閱讀 461評論 0 0
  • 遞歸思想關注的是與當前步驟有關的上一步和下一步的關系,它不關注整體。 如何發(fā)現(xiàn)規(guī)律? 觀察逆推重復 遞歸算法總是給...
    Stroman閱讀 652評論 0 0
  • 參考資料傳送門遞歸_百度百科遞歸_維基百科 c語言中的函數(shù)式編程,允許一個函數(shù)里面調用一個或多個函數(shù), 例如: 在...
    我什么都不知道呀閱讀 589評論 0 1
  • 以下程序 不對,僅供思路思考。。用二叉樹比較好/* include<iostream> using namespa...
    LuckTime閱讀 166評論 0 0

友情鏈接更多精彩內容