這兩對
兔子順序問題:第壹個月有壹對兔子,每對兔子從出生開始每兩個月可以繁殖另壹對兔子。找出第n個月有多少對兔子。
奶牛數量:如果壹只小母牛從出生後第四年開始每年生壹頭奶牛,按照這個規律,第n年有多少頭奶牛?
兔子數列也叫斐波那契數列:1,1,2,3,5,8,13,21,34,55,89,...
編程求數列這個問題,首先要找到規律,所以壹定要學會分析稿紙上的數列。下面我來打個草稿:
上個月的兔子數是新生兔子總數。
1 1
2 1 0 1+0=1
3 1 1 1+1=2
4 2 1 2+1=3
5 3 2 3+2=5
6 5 3 5+3=8
……
我們知道最初只有壹對兔子,但問題是如何每個月都有新的兔子。仔細分析後妳會發現,其實每個月新增的兔子對數等於上個月的總兔子對數。簡單來說就是每個月新增的兔子對數等於前兩個月的兔子對數總和,其實不難理解。因為兔子每兩個月生壹對,上個月剛出生的兔子肯定生不出兔子,所以每個月新增的兔子對數等於前兩個月的兔子對數總和。廢話很多,但是分析清楚了,所以我們只需要取兩個變量,壹個是記錄上個月兔子的對數,壹個是記錄新兔子的對數,也就是上個月兔子的對數。每個月過去,當月兔子的對數等於上月兔子的對數加上上月兔子的對數,然後將上月記錄的變量重新賦給上月記錄的變量,將上月記錄的變量重新賦給當月的值。該過程如下:
# include & ltiostream.h & gt
void main()
{
long f1=1,f2=1,sum = 1;// f1:上月f2:上月F2。
int n;
cout & lt& lt“兔子的數量是幾月的?”;
CIN & gt;& gtn;
for(int I = 2;我& ltn;I++) //註意這裏i=2是因為前兩個月兔子的對數是1,因為前兩個月沒有新兔子出生。
{
sum = f 1+F2;
F2 = f 1;
f 1 = sum;
}
cout & lt& lt“第壹”
}