函數(shù)還有很重要的一個板塊沒有和友友們介紹,這個知識點就是遞歸。希望我的文章可以帶來幫助。
2. 遞歸的兩個必要條件程序調(diào)用自身的編程技巧稱為遞歸。
遞歸作為一種算法在程序設(shè)計語言中廣泛應(yīng)用。是一個過程或函數(shù)在其定義或說明中有直接或間接調(diào)用自身的一種方法,它通常把一個大型復(fù)雜的問題層層轉(zhuǎn)化為一個與原問題相似的規(guī)模較小的問題來求解。
同時遞歸只需少量的程序就可描述出解題過程所需要的多次重復(fù)計算,大大減少程序的代碼量。
遞歸的主要思考方式在于:把大事化小
(1)存在限制條件,當(dāng)滿足這個限制條件的時候,遞歸便不再繼續(xù)。
(2)每次遞歸之后越來越接近這個限制條件。
3. 實例輸入n和k通過函數(shù)遞歸實現(xiàn)計算n的k次方。
代碼如下:
#define _CRT_SECURE_NO_WARNINGS
#includeint fac(int x, int y)
{
while (y != 0)
{
if (y >= 2)
{
return x * fac(x, y - 1);
}
else
{
return x;
}
}
}
int main()
{
int n = 0;
int k = 0;
scanf("%d %d", &n, &k);
int num = fac(n, k);
printf("%d", num);
return 0;
}
這段代碼就很好的體現(xiàn)了遞歸把大事化小的思考方式,計算n的k次方可以看成n乘以n的k-1次方,這樣就可以通過函數(shù)遞歸來實現(xiàn)了 。
4. 遞歸與迭代有許多問題是可以使用遞歸的形式進(jìn)行解釋的,這是因為它比非遞歸的形式更加清晰而且遞歸更加簡潔。但是這些問題往往使用迭代的方式要比遞歸的方式效率更高。舉例如下:
求第n個斐波那契數(shù)
遞歸方式:
//遞歸
#define _CRT_SECURE_NO_WARNINGS
#includeint fac(int x)
{
if (x<= 2)
return 1;
else
return fac(x - 1) + fac(x - 2);
}
int main()
{
int n = 0;
scanf("%d", &n);
int num = fac(n);
printf("%d", num);
return 0;
}
但是有一個問題當(dāng)我們輸入n的數(shù)字大一點的時候它并沒有立刻出現(xiàn)結(jié)果,假設(shè)我輸入n=60的時候:
這是因為數(shù)字過大的時候我們會重復(fù)計算很多種數(shù)值圖解如下:
所以對代碼進(jìn)行一些改進(jìn),非遞歸方式:
//非遞歸
#define _CRT_SECURE_NO_WARNINGS
#includeint fac(int x)
{
int a = 1;
int b = 1;
int c = 1;
while (x >= 3)
{
c = a + b;
a = b;
b = c;
x--;
}
return c;
}
int main()
{
int n = 0;
scanf("%d", &n);
int num=fac(n);
printf("%d", num);
return 0;
}
這樣問題就可以解決了:
所以在使用遞歸的時候要適度,不要鉆牛角尖哦!
今天分享到這里,希望大家一起提高!
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
當(dāng)前文章:初識C語言:函數(shù)詳解(二)-創(chuàng)新互聯(lián)
標(biāo)題來源:http://jinyejixie.com/article12/peodc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、小程序開發(fā)、微信小程序、網(wǎng)站設(shè)計、虛擬主機、電子商務(wù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容