1.函數(shù)的調(diào)用
創(chuàng)新互聯(lián)公司是一家專業(yè)提供漠河企業(yè)網(wǎng)站建設(shè),專注與做網(wǎng)站、成都網(wǎng)站制作、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為漠河眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進行中。函數(shù)的調(diào)用分為兩種,一種是嵌套調(diào)用,一種是遞歸調(diào)用,先來說嵌套調(diào)用,在C語言中,函數(shù)可以在函數(shù)體中調(diào)用另外一個函數(shù),這就是所謂的嵌套調(diào)用。
注意:C語言函數(shù)之間可以嵌套調(diào)用,但不可以嵌套定義。
下面是一個嵌套調(diào)用的例子。
#include//定義兩個整數(shù)做對比返回大值函數(shù)
int max(int num1,int num2)
{
return num1 >num2 ? num1:num2;
}
//定義多個整數(shù)做對比返回大值函數(shù)
int Max(int num1,int num2,int num3,int num4)
{
return max(num1,num2) >max(num3,num4) ? max(num1,num2) : max(num3,num4);
}
//此處出現(xiàn)了C語言中的條件運算符: 表達式1 >表達式2 ? 表達式1 : 表達式2;
//該語句中,如果問好前面的邏輯表達式結(jié)果為真,則該語句的結(jié)果為表達式1,否則為表達式2;
int main()
{
int a = 1,b = 2,c = 3,d = 4;
printf("大值為:%d",Max(a,b,c,d));
//上面語句中,我們只調(diào)用了一次Max函數(shù),而Max函數(shù)里面調(diào)用了兩次max函數(shù)
return 0;
}
另外一種就是遞歸調(diào)用,好多小伙伴對遞歸都感到非常恐懼,很難理清楚遞歸調(diào)用的背后程序是如何運行的,但其實它背后的邏輯很簡單,之所以初學(xué)對遞歸感到害怕,大多是因為當(dāng)老師講到遞歸并讓我們應(yīng)用遞歸去解決一個問題時,我們所面對的問題邏輯有些復(fù)雜,因此,這里我給出一個簡單的利用遞歸可以解決的問題:求1到100的整數(shù)和。
下面給出代碼:
#include//定義一個函數(shù)求取1到n的和
int sum(int n)
{
if(n >= 1) return n + sum(n - 1);//遞歸加和n、n-1、n-2...1
return 0; //當(dāng)遞歸傳入的參數(shù)小于1時返回0;實現(xiàn)了從1加和到n的過程
}
int main()
{
int n = 100;
printf("和為:%d\n",sum(n));
return 0;
}
上面的代碼中,遞歸的內(nèi)容很明顯,就是不斷地加和n、n-1...到1之間的數(shù),這樣一來,就實現(xiàn)了我們的目的。這里再重申一下遞歸的含義,在函數(shù)體中,通過不斷地調(diào)用自身來實現(xiàn)函數(shù)要解決的問題,這個過程成為遞歸。
提示:寫遞歸函數(shù)的時候需要特別注意遞歸的終止條件,在上述問題中,終止條件是當(dāng)傳入的參數(shù)值小于1時返回0,不再調(diào)用自身,開始逐層向上返回函數(shù)值。
細心的同學(xué)可以發(fā)現(xiàn),求1到100的和,這個問題用循環(huán)也能解決,而且好像比遞歸更好理解,事實上,在很多問題當(dāng)中,可以用循環(huán)解決的問題,大多也能用遞歸解決,只不過當(dāng)遇到諸如漢諾塔這樣的著名數(shù)學(xué)問題時,遞歸往往是我們更好的選擇,因此掌握函數(shù)的遞歸,也是相當(dāng)重要的。
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧