初識C語言:函數(shù)詳解(二)-創(chuàng)新互聯(lián)

函數(shù)還有很重要的一個(gè)板塊沒有和友友們介紹,這個(gè)知識點(diǎn)就是遞歸。希望我的文章可以帶來幫助。

創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比潛山網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式潛山網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋潛山地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。1. 什么是遞歸

程序調(diào)用自身的編程技巧稱為遞歸。

遞歸作為一種算法在程序設(shè)計(jì)語言中廣泛應(yīng)用。是一個(gè)過程或函數(shù)在其定義或說明中有直接或間接調(diào)用自身的一種方法,它通常把一個(gè)大型復(fù)雜的問題層層轉(zhuǎn)化為一個(gè)與原問題相似的規(guī)模較小的問題來求解。

同時(shí)遞歸只需少量的程序就可描述出解題過程所需要的多次重復(fù)計(jì)算,大大減少程序的代碼量。

遞歸的主要思考方式在于:把大事化小

2. 遞歸的兩個(gè)必要條件

(1)存在限制條件,當(dāng)滿足這個(gè)限制條件的時(shí)候,遞歸便不再繼續(xù)。

(2)每次遞歸之后越來越接近這個(gè)限制條件。

3. 實(shí)例

輸入n和k通過函數(shù)遞歸實(shí)現(xiàn)計(jì)算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)了遞歸把大事化小的思考方式,計(jì)算n的k次方可以看成n乘以n的k-1次方,這樣就可以通過函數(shù)遞歸來實(shí)現(xiàn)了 。

4. 遞歸與迭代

有許多問題是可以使用遞歸的形式進(jìn)行解釋的,這是因?yàn)樗确沁f歸的形式更加清晰而且遞歸更加簡潔。但是這些問題往往使用迭代的方式要比遞歸的方式效率更高。舉例如下:

求第n個(gè)斐波那契數(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;
}

但是有一個(gè)問題當(dāng)我們輸入n的數(shù)字大一點(diǎn)的時(shí)候它并沒有立刻出現(xiàn)結(jié)果,假設(shè)我輸入n=60的時(shí)候:

59f344243e1e47189bd0bc33723a7825.png

這是因?yàn)閿?shù)字過大的時(shí)候我們會重復(fù)計(jì)算很多種數(shù)值圖解如下:

93eb39f2740b45a5ac77ba088f1d8e9a.png

所以對代碼進(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;
}

這樣問題就可以解決了:

39efd25e63c942f28c7bea4479d3baf6.png

所以在使用遞歸的時(shí)候要適度,不要鉆牛角尖哦!

34aacfe9f07b4a0f87e83d05c3f4bbac.png

今天分享到這里,希望大家一起提高!

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧

當(dāng)前文章:初識C語言:函數(shù)詳解(二)-創(chuàng)新互聯(lián)
標(biāo)題來源:http://muchs.cn/article12/peodc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、小程序開發(fā)、微信小程序網(wǎng)站設(shè)計(jì)、虛擬主機(jī)電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營