您好,登錄后才能下訂單哦!
一、定義、聲明和調(diào)用
函數(shù): | 一段可以重復(fù)使用的代碼 |
函數(shù)三要素: | 返回值 函數(shù)名 函數(shù)形參列表 |
函數(shù)聲明: | 包含函數(shù)的三要素 |
函數(shù)定義: | 函數(shù)的具體實(shí)現(xiàn) |
返回值: | 如果一個函數(shù)沒有返回值,則寫成 void |
函數(shù)形參列表: | 如果沒有參數(shù),寫成空 ,變量之間用逗號隔開 |
二、函數(shù)聲明:
函數(shù)聲明時,形參可以不加變量名,只有類型也可以
int add(int, int);
三、函數(shù)定義:
函數(shù)定義時,形參可以必須要有變量名
int add(int a, int b) { int sum = a + b; return sum; }
四、函數(shù)調(diào)用 :
如果函數(shù)定義在主函數(shù)上方,可以不寫函數(shù)聲明。
如果函數(shù)定義在主函數(shù)下方,必須在主函數(shù)上方寫好聲明
int main() { int a = 10; int b = 20; // 函數(shù)調(diào)用的時候,傳的參數(shù)叫實(shí)參 int sum= add(a, b); printf (“sum = %d\n”, sum); return 0; }
五、函數(shù)名
函數(shù)名是函數(shù)的入口地址
定義一個函數(shù)指針:
int (*p)(int a.int b) =add;
六、遞歸函數(shù)
一個函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身稱為遞歸調(diào)用,這種函數(shù)稱為遞歸函數(shù)。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身,每調(diào)用一次就進(jìn)入新的一層。
用遞歸計算 n!。階乘 n! 的計算公式如下:
根據(jù)公式編程:
long factorial(int n) { long result; if(n ==0 || n ==1) { result = 1; } else { result = factorial(n-1) * n; // 遞歸調(diào)用 } return result; }
這是一個典型的遞歸函數(shù)。調(diào)用factorial后即進(jìn)入函數(shù)體,只有當(dāng) n== 0 或 n==1 時函數(shù)才會執(zhí)行結(jié)束,否則就一直調(diào)用它自身。
由于每次調(diào)用的實(shí)參為 n-1,即把 n-1 的值賦給形參 n,所以每次遞歸實(shí)參的值都減 1,直到最后 n-1 的值為 1 時再作遞歸調(diào)用,形參 n 的值也為1,遞歸就終止了,會逐層退出。
例如求 5!,即調(diào)用factorial(5)。當(dāng)進(jìn)入factorial函數(shù)體后,由于 n=5,不等于0或1,所以執(zhí)行result = factorial(n-1) * n;,即result = factorial(5-1) * 5;,接下來也就是調(diào)用factorial(4)。這是第一次遞歸。
進(jìn)行四次遞歸調(diào)用后,實(shí)參的值為 1,也就是調(diào)用factorial(1)。這時遞歸就結(jié)束了,開始逐層返回。factorial(1) 的值為 1,factorial(2) 的值為 12=2,factorial(3) 的值為 23=6,factorial(4) 的值為 64=24,最后返回值 factorial(5) 為 245=120。
注意:
1.為了防止遞歸調(diào)用無終止地進(jìn)行,必須在函數(shù)內(nèi)有終止遞歸調(diào)用的手段。常用的辦法是加條件判斷,滿足某種條件后就不再作遞歸調(diào)用,然后逐層返回。
2.遞歸調(diào)用不但難于理解,而且開銷很大,如非必要,不推薦使用遞歸。很多遞歸調(diào)用可以用迭代(循環(huán))來代替。
以上就是C語言函數(shù)基礎(chǔ)知識有哪些?的詳細(xì)內(nèi)容,更多請關(guān)注億速云其它相關(guān)文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。