日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c语言编程一对新出生的兔子,C语言兔子生兔子的问题(3中解法)

發布時間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言编程一对新出生的兔子,C语言兔子生兔子的问题(3中解法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有一對兔子,從出生后第 3 個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?

兔子的規律為數列:1, 1, 2, 3, 5, 8, 13, 21 ....

下面使用了迭代、遞歸和數組三種解法。

【代碼一】使用迭代:

#include

int main()

{

long f1=1, f2=1; // 兔子的數量

int i; // 循環次數

int n; // 要計算的月份

printf("輸入要計算的月數:");

scanf("%d", &n);

// 計算出循環次數

if(n%2==1){

n = (n+1)/2;

}else{

n = n/2;

}

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

printf("第%d個月有%d只\n", i*2-1, f1);

printf("第%d個月有%d只\n", i*2, f2);

f1=f1+f2; /*前兩個月加起來賦值給第三個月*/

f2=f1+f2; /*前兩個月加起來賦值給第三個月*/

}

return 0;

}

運行結果:

運行結果:

輸入要計算的月數:10

第1個月有1只

第2個月有1只

第3個月有2只

第4個月有3只

第5個月有5只

第6個月有8只

第7個月有13只

第8個月有21只

第9個月有34只

第10個月有55只

【方法二】使用遞歸:

#include

int Feibonacci(int n){

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

return 1;

else

return Feibonacci(n-1)+Feibonacci(n-2);

}

int main(){

int n; // 要計算的月份

printf("輸入要計算的月數:");

scanf("%d", &n);

printf("%d個月的兔子總數為%d\n", n, Feibonacci(n));

return 0;

}

運行結果:

輸入要計算的月數:10

10個月的兔子總數為55

遞歸看上去非常符合邏輯,但是這種遞歸效率是非常慢的,不信你計算20, 30, 40 個月的兔子數試試,明顯比另外兩種方法慢多了,具體分析請看:C語言用遞歸求斐波那契數,讓你發現遞歸的缺陷和效率瓶頸

【代碼三】使用數組:

#include

void main()

{

int a[100] ,i,n;

printf("請輸入月數:");

scanf("%d",&n);

a[0]=a[1]=1;

for(i=2;i

a[i]=a[i-1]+a[i-2];

printf("第%d個月的兔子為:%d\n", n, a[n-1]);

}

運行結果:

請輸入月數:10

第10個月的兔子為:55

總結

以上是生活随笔為你收集整理的c语言编程一对新出生的兔子,C语言兔子生兔子的问题(3中解法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。