C語言學習總結(1) 遞迴函式的理解

2021-07-16 19:12:44 字數 1327 閱讀 5965

即是該函式呼叫它本身自己,這種呼叫過程稱為遞迴。

遞迴可以相當於迴圈,所以想結束遞迴,就必須有終止遞迴的條件測試部分,否則就會出現無限遞迴(即無限迴圈)。同時,這也是使用遞迴的難點。

#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,而今天又主要講了運算子和表示式,所以對於今天的知識還是比較容易了,還講了型別之間的轉換,這也是比較重要的 像...