站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        C語言函數(shù)基礎(chǔ)知識(shí)有哪些?


        C語言函數(shù)基礎(chǔ)知識(shí)有哪些?

        C語言函數(shù)基礎(chǔ)知識(shí)有哪些?

        C語言函數(shù)基礎(chǔ)知識(shí)有:

        一、定義、聲明和調(diào)用

        函數(shù): 一段可以重復(fù)使用的代碼
        函數(shù)三要素: 返回值 函數(shù)名 函數(shù)形參列表
        函數(shù)聲明: 包含函數(shù)的三要素
        函數(shù)定義: 函數(shù)的具體實(shí)現(xiàn)
        返回值: 如果一個(gè)函數(shù)沒有返回值,則寫成 void
        函數(shù)形參列表: 如果沒有參數(shù),寫成空 ,變量之間用逗號(hào)隔開

        二、函數(shù)聲明:

        函數(shù)聲明時(shí),形參可以不加變量名,只有類型也可以

        int add(int, int);


        三、函數(shù)定義:

        函數(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ù)叫實(shí)參 int sum= add(a, b); printf (“sum = %dn”, sum); return 0; }


        五、函數(shù)名

        函數(shù)名是函數(shù)的入口地址

        定義一個(gè)函數(shù)指針:

        int (*p)(int a.int b) =add;

        六、遞歸函數(shù)

        一個(gè)函數(shù)在它的函數(shù)體內(nèi)調(diào)用它自身稱為遞歸調(diào)用,這種函數(shù)稱為遞歸函數(shù)。執(zhí)行遞歸函數(shù)將反復(fù)調(diào)用其自身,每調(diào)用一次就進(jìn)入新的一層。

        用遞歸計(jì)算 n!。階乘 n! 的計(jì)算公式如下:

        根據(jù)公式編程:

        long factorial(int n) { long result; if(n ==0 || n ==1) { result = 1; } else { result = factorial(n-1) * n; // 遞歸調(diào)用 } return result; }

        這是一個(gè)典型的遞歸函數(shù)。調(diào)用factorial后即進(jìn)入函數(shù)體,只有當(dāng) n== 0 或 n==1 時(shí)函數(shù)才會(huì)執(zhí)行結(jié)束,否則就一直調(diào)用它自身。

        由于每次調(diào)用的實(shí)參為 n-1,即把 n-1 的值賦給形參 n,所以每次遞歸實(shí)參的值都減 1,直到最后 n-1 的值為 1 時(shí)再作遞歸調(diào)用,形參 n 的值也為1,遞歸就終止了,會(huì)逐層退出。

        例如求 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)。這時(shí)遞歸就結(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視頻教程》

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 亚洲?V无码成人精品区日韩| 精品久久久久久成人AV| 久久精品国产亚洲AV无码娇色| 亚洲综合精品网站| 中国国产精品| 国产高清在线精品一区二区三区| 国产精品污WWW一区二区三区| 人人妻人人澡人人爽精品欧美 | 99热热久久这里只有精品68 | 99久久成人国产精品免费| 国产精品久久国产精麻豆99网站| 亚洲精品国产成人专区| 国产美女精品视频| 国产亚洲福利精品一区| 精品欧洲av无码一区二区三区| 亚洲精品国产V片在线观看| 99久久99这里只有免费费精品| 青青青青久久精品国产h| 欧美精品综合视频一区二区| 91精品国产自产在线观看| 真实国产精品vr专区| 久久久久99精品成人片三人毛片| 久久精品国产网红主播| 在线观看国产精品普通话对白精品| 精品一区二区无码AV| 久久精品人人做人人爽电影蜜月 | 久久久久无码精品国产app| 国产欧美日韩综合精品二区| 国产精品高清2021在线| 99久久精品免费观看国产| 88国产精品欧美一区二区三区| www夜片内射视频日韩精品成人 | 影视网欧洲精品| 夜色www国产精品资源站| 丰满人妻熟妇乱又伦精品劲| 国产精品国产AV片国产| 精品国偷自产在线视频| 欧美精品v国产精品v日韩精品| 久久精品一区二区三区不卡| 成人精品视频99在线观看免费| 国产AV午夜精品一区二区三区 |