18.12.09-C语言练习:兔子繁衍问题 / Fibonacci 数列
生活随笔
收集整理的這篇文章主要介紹了
18.12.09-C语言练习:兔子繁衍问题 / Fibonacci 数列
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:
問題解析:
這是典型的/Fibonacci 數列問題。具體這里不贅述。
問題中不論是初始的第1對兔子還是以后出生的小兔子都是從第3個月齡起每個月各生一對兔子。
設n1,n2,n3分別是每個月1個月月齡,2個月月齡,大于等于3個月月齡的兔子數量。則下個月這三個類型月齡兔子數量分別是 n3, n1, n3+n2。
即:下個月1個月月齡兔子數量是上個月大于等于3個月月齡兔子的數量,2個月月齡兔子數量是上個月1個月月齡兔子數量,大于等于3個月月齡兔子數量是上個月大于等于3個月月齡兔子數量加上上個月2個月月齡兔子數量。
程序:
1 #include <stdio.h> 2 int main(void) { 3 /*n1, n2, n3 分別是有1個月月齡,2個月月齡,3個月月齡的兔子數量*/ 4 int n1 = 1, n2 = 0, n3 = 0; 5 /*total 是兔子總數量*/ 6 int total = 0; 7 /* i 是月份, num是輸入變量, t是中間變量 */ 8 int i=1, num, t; 9 printf("請輸入數量:"); 10 scanf("%d", &num); 11 while(1){ 12 total = n1 + n2 + n3; 13 if(total >= num) break; 14 /*求下個月兔子數量*/ 15 i += 1; 16 /*下面四行語句注意順序不能混亂*/ 17 t = n1; 18 n1 = n3 + n2; 19 n3 += n2; 20 n2 = t; 21 } 22 printf("所需月數:%d\n", i); 23 return 0; 24 }程序執行結果:
?
問題表述中可能不嚴謹的地方:
1. 第一對兔“第3個月起”, 新生兔子“第3個月后”。不夠嚴謹,因為月是一個時間段,應統一理解為“三個月后”。上述程序也是這么理解的。
2. “第幾個月時兔子總數才可以達到n對?”。似乎有歧義:剛好達到n對還是大于等于n對。上述統一理解為“大于等于n對”。
?
轉載于:https://www.cnblogs.com/coder211/p/10091128.html
總結
以上是生活随笔為你收集整理的18.12.09-C语言练习:兔子繁衍问题 / Fibonacci 数列的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: groovy使用范型的坑
- 下一篇: 典型用户分析及用户场景分析