c語言允許函式呼叫它自己,這種呼叫的過程稱為「遞迴(recursion)」
舉例說明,如下**:
#include void up_and_down(int);int main(void
)void up_and_down(int
n)
定義乙個函式up_and_down(int n),且函式當中再次呼叫本身。下面是程式執行效果:
[root@miwifi-r4-srv c]# cc recur.c
[root@miwifi-r4-srv c]# ./a.out
level 1: n location 0x7ffdbc113dac
level 2: n location 0x7ffdbc113d8c
level 3: n location 0x7ffdbc113d6c
level 3: n location 0x7ffdbc113d6c
level 2: n location 0x7ffdbc113d8c
level 1: n location 0x7ffdbc113dac
**分析;函式up_and_down(int n)中在包含if語句,符合條件變再次呼叫自身,那麼可將up_and_down(int n)分解寫成如下形式:
void up_and_down(intn) //根據主函式賦值,n=1;
printf(
"level %d: n location %p\n
",n,&n); //執行語句,輸出顯示:level 2 :n ............
}printf(
"level %d: n location %p\n
",n,&n); //執行語句,輸出顯示:level 1 :n ........
}
分析**行為如下。
1;n 接收到主函式值為1,執行printf()函式,之後判定if語句,條件為真則繼續呼叫本身,執行printf()函式,判定if語句。直到if條件為假,停止呼叫本身。
2;當 n 的值為3 時。if條件語句為假,則跳過if語句,執行printf("level %d: n location %p\n", n , &n);(注意:此時n的值為3).
3;當遞迴函式(n值為3時)執行結束,則將控制權返回給上一級遞迴(n的值為2)的時候,繼續完成遞迴函式。重複行為,直到返回到主函式,即n的值為1的時候。
遞迴下降分析程式設計 演算法講解之遞迴演算法
前面已經介紹了關於遞迴呼叫這樣一種操作,而遞迴程式設計是c 語言程式設計中的一種重要的方法,它使許多複雜的問題變得簡單,容易解決了。遞迴特點是 函式或過程呼叫它自己本身。其中直接呼叫自己稱為直接遞迴,而將a呼叫b,b以呼叫a的遞迴叫做間接遞迴。例1 給定n n 1 用遞迴的方法計算1 2 3 4 n...
C語言的遞迴思想例項分析
通俗點來說,遞迴就是自己呼叫自己。遞迴的難點一是理解遞迴的執行呼叫過程,二是設定乙個合理的遞迴結束條件。下面來看一段摘自書中的簡單程式 include long fact int n long ct int n int main 程式設計客棧void else long fact int n ret...
c語言詳細講解!
你知道我們申明乙個變數時象這樣int i 這個i是可能在它處重新變賦值的。如下 int i 0 i 20 這裡重新賦值了 不過有一天我的程式可能需要這樣乙個變數 暫且稱它變數 在申明時就賦乙個初始值。之後我的程式在其它任何處都不會再去重新對它賦值。那我又應該怎麼辦呢?用const const int...