即是該函式呼叫它本身自己,這種呼叫過程稱為遞迴。
遞迴可以相當於迴圈,所以想結束遞迴,就必須有終止遞迴的條件測試部分,否則就會出現無限遞迴(即無限迴圈)。同時,這也是使用遞迴的難點。
#include void recur(int);
int main (void)
void recur(int n) //遞迴函式
printf("第%d級返回\n", n); //#2
}
第1級呼叫
第2級呼叫
第3級呼叫
第4級呼叫
第4級返回
第3級返回
第2級返回
第1級返回
從結果可以看出,#1和#2相當於迴圈體,當符合測試條件(即n<4)時,#1部分迴圈;當測試條件為false時,#2部分迴圈。在遞迴函式中,位於遞迴呼叫之前的語句(即#1部分),按被調函式(即recur())的順序執行;位於遞迴呼叫之後的語句(即#2部分),按被調函式相反的順序執行。
每級函式呼叫都有自己的變數,遞迴呼叫就相當於又從頭開始執行函式的**。
每次函式呼叫都會返回一次,並且按順序逐級返回遞迴。
遞迴快速耗記憶體不方便閱讀和維護
效率低簡潔
適合解決階乘、涉及相反順序的程式設計問題
正好在return語句之前。尾遞迴是最簡單的遞迴形式,因為它相當於迴圈。
從遞迴函式中,可以隱約的知道所有的c函式皆平等,即是你可以呼叫我,我可以呼叫你。ps:這是xzhi本人第一次寫部落格
C語言學習筆記 遞迴函式
在本章遞迴函式的學習過程中,我們將舉出幾個典型的遞迴例子,以及三種理解遞迴執行的方法。include void fun int n int main 這就是乙個簡單的遞迴函式,要注意的是在函式內部再次呼叫的時候引數變成了n 1,這樣的目的是使函式獲得迴圈控制變數的變化,以及迴圈停止的條件。void ...
C語言學習之遞迴
學習c語言到遞迴時,還記得那個用來拋磚引玉的例子 從前呀,有座山,山里有個老和尚給乙個小和尚講故事,講的什麼故事呢?從前呀,有座山,山里有個老和尚給乙個小和尚講故事,講的什麼故事呢?從前呀.這個故事估計是可以說到世界毀滅 不難發現整個故事都在迴圈乙個語句 從前呀,有座山,山里有個老和尚給乙個小和尚講...
C語言學習1
今天可能是開始學習重點了,講了許多的東西,並且老師也對c語言這門學科的各個方面進行了闡述,我發現就算是把這門學科的知識都學完了也才是基礎,這門學科的博大,今天的知識有點多,因為以前也學過js,而今天又主要講了運算子和表示式,所以對於今天的知識還是比較容易了,還講了型別之間的轉換,這也是比較重要的 像...