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