雜談C語言 1 遞迴函式剖析

2021-08-20 06:59:58 字數 3670 閱讀 5588

遞迴函式:自己呼叫自己,是子函式實現的基礎。

遞迴之所以能實現,是因為函式的每個執行過程在棧中都有自己的形參和區域性變數的副本,這些副本和該函式的其他執行過程不發生關係

但是遞迴函式在深層迴圈時效率很低,所以一般不是必須還是不要使用遞迴,即使用也不要層次很深

#include

void displaynames(

char

** cnamearray);

/*宣告函式*/

char

* cnames=

/*定義字串陣列*/

;

int main()

void displaynames(

char

** cnamearray)

else

}

內部:static返回值型別函式名(引數列表)

#include

static

char

* getstring(

char

* pstring)

/*定義賦值函式*/

static

void showstring(

char

* pstring)

/*定義輸出函式*/

int main()

外部:extern int add(int inum1,int inum2);

外部函式是可以被其他原始檔呼叫的函式

#include

extern

char

* getstring(

char

* pstring);

/*宣告外部函式*/

extern

void showstring(

char

* pstring);

/*宣告外部函式*/

int main()

extern

void showstring(

char

* pstring)

extern

char

* getstring(

char

* pstring)

分割線

遞迴函式的難點在於展開函式不要錯誤就ok了

void fun(

int i)

printf(

"%d\n"

,i);

}

int main()

/*

0

1

2

5

10

*/

展開之後

void fun(

int i)

printf(

"%d\n"

,i/4

);}

printf(

"%d\n"

,i/2

);}

printf(

"%d\n"

,i);

}

利用遞迴函式解決問題

不使用任何變數編寫 strlen 函式-------字串統計函式

int my_strlen(

const

char

* strdest )

else

}

***

更簡單的程式

int my_strlen(

const

char

* strdest )

沒有做引數入口校驗,雖然簡潔但是不是很規範,改進之後為

int my_strlen(

const

char

* strdest )

遞迴函式實現階乘;

c語言函式 遞迴

函式的遞迴可以簡單的理解為迴圈,但他和迴圈是不一樣的。函式的一次遞迴呼叫相當於一次迴圈。一般情況下,迴圈要比遞迴計算的時間要快一些 函式的遞迴是在函式內呼叫自己,滿足限制條件後,就會返回到上乙個函式,知道返回到最初的函式 遞迴的呼叫條件 1 限制條件 滿足這個條件,遞迴將不再進行。2 每次的遞迴呼叫...

C語言遞迴習題 (1)

遞迴在各個考試中特別常考,因為考這類題目可以快速反應考生的程式設計思維水平。所以遞迴問題的練習是必不可少的。遞迴說難不難,說易不易,要把握關鍵的點,我們可以解決問題。我在這裡給幾道遞迴題目由易到難,希望給大家有所幫助。乙個過程或函式在其定義或說明中有直接或間接呼叫自身的一種方法,它通常把乙個大型複雜...

C語言入門雜談

我覺得乙個人第一次做的事情會影響他以後做這方面的風格,就像是我第一次學習程式設計,我的老師是傳智播客的尹成,我的 風格也接近於他的教學方式,其次就是對於學習方法的探索,把我領進門的是尹成,同時我的學習方法也是在他的影響下形成的,如果是乙個比較嚴謹的老師,那我在寫 的時候會比較嚴謹,如果是比較馬虎的老...