當前位置:首頁 » 編程語言 » c語言兔子繁衍遞歸
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言兔子繁衍遞歸

發布時間: 2022-02-28 16:53:35

1. c語言題老師留的 兔子繁殖問題,用遞歸函數的方法做。 個位大神編一個然後寫下答案請寫上兔子多少只

//兔子的對數,就是Fibonacci數列

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

#include<stdio.h>
intf(intn)
{
if(n<3)
return1;
else
returnf(n-2)+f(n-1);
}
voidmain()
{
intn;
scanf("%d",&n);
printf("%d年後,有兔子%d只. ",n,f(n));
}

2. 語言用遞歸法解兔子繁殖問題(斐波那契數列),求每月的兔子數目。

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

3. c語言:兔子繁殖問題

兔子的對數,就是Fibonacci數列
#include <stdio.h>
long f(long n)
{
if(n<3) return 1;
else return f(n-2)+f(n-1);
}
void main()
{
printf("一年後,有兔子%ld對.\n", f(12));
getch();
}
---------------------------------------------------------
1 1 2 3 5 8 13 21 34 55 89 ...

4. C語言編程題目 兔子繁衍問題

方法一、用遞歸。

方法二、把兔子定義成結構,每個兔子自帶計時器變數,繁殖就是新建節點,構建結構鏈表。每次循環遍歷所有節點的計時變數大於3的就新建一個節點插入鏈表。最後統計節點數量。

我用方法1來寫:

#include <stdio.h>

int childbirth(int bMth,int gMth)//bMth:調用時傳0,gMth:經過的最大月數


{


int cnt=0,n=bMth,num=2;


while(n++<gMth+1)


if(cnt++>2)


num=num+childbirth(n,gMth+1);


return num;


}

int main()


{


int i,n;


printf("請輸入經過多少月:"),scanf("%d",&n);


for(i=1;i<=n;i++)


printf("經過%d個月後:兔子數量為:%d ",i,childbirth(0,i));


return 0;


}

5. C語言遞歸的方法:有一對兔子,從出生後第3個月起每個月都生一對兔子的問題

可以考慮遞歸演算法:

int Amount(int day)
{
if (day==10)
{
return 1;
}
else
{
return 2*(Amount(day-1)+1);
}
}

早說嘛。。。害的白寫了個。。

這題可以多用幾個遞歸函數解決,在這里我稱不能生育的兔子為小兔,能生育的為大兔

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);
}

註:這種增長速度的話很快兔子的數量就會增長到很大,所以如果month達到幾十的話就會超過int范圍,所以可以考慮用__int64代替int,另外到時候如果依然每次都遞歸的話運行速度也會變慢,可能要好幾秒,好幾分鍾,甚至更長的時間才能算出結果,所以可以考慮用數組存每個遞歸函數算出的值,如:
littleR(int month)中else可寫成
if (...)
{
...
}
else
{
if (a[month]!=0)
return month;
else
return a[month]=bigR(month-1)+little(month-1);
}
用這種方法可以適當提高運行速度。。。

6. C語言編程:兔子繁殖問題

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#defineM13
intmain()
{
inti;
longa[M]={1,1};
for(i=2;i<M;i++)
{
a[i]=a[i-1]+a[i-2];

}
for(i=0;i<M;i++)
{
printf("%d月兔子總數:%d ",i,a[i]);

}
getch();
return0;}

7. c語言兔子繁殖問題

你好 可以創建一個數組a。
a[0]和a[1]都為1。
之後每一項都遵循a[n]=a[n-1]+a[n-2]。用for循環寫。
由此依次列出每一項。每一項使用\t隔開。
需要一個count變數。每輸出一個值count++
如果count求餘5為0,輸出一個\n。
最後就可以做到如圖的輸出,請給好評~

8. C語言遞歸N個月兔子

#include<stdio.h>
intdigui(intn);
intmain(void)
{
intn=0;
scanf("%d",&n);
printf("%d ",digui(n));
return0;
}
intdigui(intn)
{
returnn>1?digui(n-1)+digui(n-2):1;
}

9. 兔子繁殖,C語言

#include<stdio.h>
intmain(void)
{
intn,i,a,b,c;
a=0;
b=1;
i=1;
printf("請輸入兔子對數n=");
scanf("%d",&n);
while(b<n){
c=a+b;/*while裡面一次循環是1個月*/
a=b;
b=c;
i++;
}
printf("至少%d月",i);
return0;
}

10. c語言關於兔子繁殖的問題

#include<stdio.h>
intmain()
{intf1,f2,f,i;
printf("1 1 ");
f1=f2=1;
for(i=3;i<31;i++)
{f=f1+f2;
printf("%d ",f);
f1=f2;
f2=f;
}
return0;
}