c語(yǔ)言兔子遞歸函數(shù)的例子,兔子C語(yǔ)言

c語(yǔ)言題老師留的 兔子繁殖問(wèn)題,用遞歸函數(shù)的方法做。 個(gè)位大神編一個(gè)然后寫(xiě)下答案

斐波那契額數(shù)列 問(wèn)題

創(chuàng)新互聯(lián)建站專(zhuān)注為客戶(hù)提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站制作、成都做網(wǎng)站、麻山網(wǎng)絡(luò)推廣、成都小程序開(kāi)發(fā)、麻山網(wǎng)絡(luò)營(yíng)銷(xiāo)、麻山企業(yè)策劃、麻山品牌公關(guān)、搜索引擎seo、人物專(zhuān)訪(fǎng)、企業(yè)宣傳片、企業(yè)代運(yùn)營(yíng)等,從售前售中售后,我們都將竭誠(chéng)為您服務(wù),您的肯定,是我們最大的嘉獎(jiǎng);創(chuàng)新互聯(lián)建站為所有大學(xué)生創(chuàng)業(yè)者提供麻山建站搭建服務(wù),24小時(shí)服務(wù)熱線(xiàn):13518219792,官方網(wǎng)址:muchs.cn

#include?stdio.h

int?fib(int?n)

{

if(n==1||n==2)

{

return?1;

}

return?fib(n-1)+fib(n-2);

}

int?main(void)?

{

printf("%d\n",fib(3));

return?0;

}

c語(yǔ)言題老師留的 兔子繁殖問(wèn)題,用遞歸函數(shù)的方法做。 個(gè)位大神編一個(gè)然后寫(xiě)下答案請(qǐng)寫(xiě)上兔子多少只

//兔子的對(duì)數(shù),就是Fibonacci數(shù)列

//1 1 2 3 5 8 13 21 34 55 89 ...

#include?stdio.h

int?f(int?n)

{

if(n??3)

return?1;

else

return?f(n?-?2)?+?f(n?-?1);

}

void?main()

{

int?n;

scanf("%d",?n);

printf("%d年后,有兔子%d只.\n",?n,?f(n));

}

C語(yǔ)言遞歸的方法:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子的問(wèn)題

可以考慮遞歸算法:

int Amount(int day)

{

if (day==10)

{

return 1;

}

else

{

return 2*(Amount(day-1)+1);

}

}

早說(shuō)嘛。。。害的白寫(xiě)了個(gè)。。

這題可以多用幾個(gè)遞歸函數(shù)解決,在這里我稱(chēng)不能生育的兔子為小兔,能生育的為大兔

int littleR(int month)

{

if (month==1)

return 0;

else

return bigR(month-1)+little(month-1);

}

int bigR(int month)

{

if (month==1)

{

return 1;

}

else if (month==2)

{

return 1;

}

else if (month==3)

{

return 1;

}

else

{

return bigR(month-1)+little(month-2);

}

}

int totalR(int month)

{

return littleR(month)+bigR(month);

}

注:這種增長(zhǎng)速度的話(huà)很快兔子的數(shù)量就會(huì)增長(zhǎng)到很大,所以如果month達(dá)到幾十的話(huà)就會(huì)超過(guò)int范圍,所以可以考慮用__int64代替int,另外到時(shí)候如果依然每次都遞歸的話(huà)運(yùn)行速度也會(huì)變慢,可能要好幾秒,好幾分鐘,甚至更長(zhǎng)的時(shí)間才能算出結(jié)果,所以可以考慮用數(shù)組存每個(gè)遞歸函數(shù)算出的值,如:

littleR(int month)中else可寫(xiě)成

if (...)

{

...

}

else

{

if (a[month]!=0)

return month;

else

return a[month]=bigR(month-1)+little(month-1);

}

用這種方法可以適當(dāng)提高運(yùn)行速度。。。

C語(yǔ)言編程:兔子繁殖問(wèn)題

思路不要亂。這個(gè)月的兔子只有兩個(gè)來(lái)源,一個(gè)來(lái)源是上個(gè)月的老兔子,另一個(gè)來(lái)源是這個(gè)月剛出生的兔子,而這個(gè)月剛出生的兔子,就是兩個(gè)月前的所有兔子,因?yàn)閮蓚€(gè)月前的所有兔子,無(wú)論兩個(gè)月前就是老的,還是兩個(gè)月前剛生的,到了這個(gè)月就全部具有生育能力,每只都可以下一對(duì)兒,所以可以得到一個(gè)遞推關(guān)系f(n) = f(n - 1) + f(n - 2)。那么程序自然是

long?fun(int?month)

{

if(month?==?1?||?month?==?2)

return?1;

else

return?fun(month?-?1)?+?fun(month?-2);

}

//?ConsoleApplication1.cpp?:?定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。

int?main()

{?

int?Mon;

long?Num;

scanf("%d",Mon);

Num?=?fun(Mon);

printf("第%d月共有兔子%ld只\n",Mon,Num);?

return?0;?

}

至于你的程序,很難把它改正確,因?yàn)檫@題壓根不是那個(gè)思路,那樣想會(huì)越想越亂的

C語(yǔ)言中自我遞歸的幾個(gè)例子

遞歸主要元素:入口,遞歸和結(jié)束。在定義遞歸函數(shù)時(shí)將這三個(gè)元素考慮進(jìn)去就行;如: double callnext(int n)

{

if(n1) return callnext(n-1)+3;

else return 1;

}

int main()

{

int m;

scanf("%d",m);

printf("result=%f",callnext(m));

return 0;

}

入口:callnext(m);遞歸:if(n1) return callnext(n-1)+3中的callnext(n-1);結(jié)束:else return 1;整個(gè)執(zhí)行流程:callnext(m) 調(diào)用 callnext(m-1);callnext(m-1)調(diào)用callnext(m-1-1)。。。

callnext(2)調(diào)用callnext(1);callnext(1)=1;結(jié)束;

本文標(biāo)題:c語(yǔ)言兔子遞歸函數(shù)的例子,兔子C語(yǔ)言
文章網(wǎng)址:http://muchs.cn/article12/phgidc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站設(shè)計(jì)全網(wǎng)營(yíng)銷(xiāo)推廣、App設(shè)計(jì)網(wǎng)站導(dǎo)航、搜索引擎優(yōu)化

廣告

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

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司