題目:
1、每頭牛6牛的時候開始生小牛,並且生得牛都是母牛;
2、農場來了一頭6歲的牛(第一年就生下一頭小牛);
問:20年後,農場有多少頭牛;
解題思路1:
我拿到這個問題的第一反應就是使用物件,建立乙個cow類,然後有乙個age屬性,再用乙個全域性變數cows來記錄牛的數量,每當我們例項化乙個牛cows就會+1。
1class
cow
89 cow(int
age)
1213
void
growup()
16 }
接下來是main方法,只需要設定乙個年數的for迴圈,再判斷牛的年齡是否大於或等於6,大的話就例項化乙個新的物件,最後輸出結果:
1public
class
wocow 15}
16 system.out.println("有" + cow.cows + "隻牛");17}
18}19 }
執行結果:
1今年是第:1年
2有2隻牛
3今年是第:2年
4有3隻牛
5今年是第:3年
6有4隻牛
7今年是第:4年
8有5隻牛
9今年是第:5年
10有6隻牛
11今年是第:6年
12有7隻牛
13今年是第:7年
14有9隻牛
15今年是第:8年
16有12隻牛
17今年是第:9年
18有16隻牛
19今年是第:10年
20有21隻牛
21今年是第:11年
22有27隻牛
23今年是第:12年
24有34隻牛
25今年是第:13年
26有43隻牛
27今年是第:14年
28有55隻牛
29今年是第:15年
30有71隻牛
31今年是第:16年
32有92隻牛
33今年是第:17年
34有119隻牛
35今年是第:18年
36有153隻牛
37今年是第:19年
38有196隻牛
39今年是第:20年
40 有251隻牛
以上是使用物件的方法,下面我們來探索其中的規律:年數0
1234
5678
9101112
1314
1516
1718
1920
新增牛的數量11
1111
1我們從0年開始,因為已經有乙隻6歲的母牛了。第一年它生下了乙隻,因為它已經是大於6歲了,一直到前六6年每年只增加1只,因為其他的牛都是小於6歲的。但是到了第七年就發生的變化,在第1年生下的牛到了第7年剛好6歲,先在能生育的牛多了乙隻,以此類推:年數0
1234
5678
9101112
1314
1516
1718
1920
新增牛的數量11
1111
1234
567到了第13年的時候又發生了變化,因為在第7點出生的兩頭牛已經6歲了 :年數0
1234
5678
9101112
1314
1516
1718
1920
新增牛的數量11
1111
1234
5679
1216
2127
3443
55由此不難發現其中的規律:如果年數大於6年的話,那麼第n年增加牛的數量就是(n-5)年前所有增加牛的數量的和:
舉例:第7年增加牛的數量是:第0年的數量+第1年的數量
第8年增加牛的數量是:第0年 到 第2年的數量和
第13年增加牛的數量: 第0年到 第7年的數量和
根據這個規律,我們開始寫**:
1int getcows(int
year)
7for (int i = 0; i < year - 5; i++)
10return
sum;
11 }
我們定義了乙個getcows()方法,這個方法的返回值就會告訴我們,當年會增加多少頭牛,下面我們寫main方法:
1public
static
void
main(string args)
8system.out.println(sum);
9 }
執行結果:
1 251
母牛生小牛問題
若母牛從其出生第四年 3周年後 開始每年都會生一頭小 母牛,按這個規律,1頭年齡為 year 的母牛在 futureyear 個年頭後會生幾頭母牛 c code class cow console readkey public cow intyear int futureyear private i...
php演算法 母牛生小牛問題
有一母牛,到4歲可生育,每年一頭,所生均是一樣的母牛,到15歲絕育,不再能生,20歲死亡,問n年後有多少頭牛。遞迴版 論壇裡的 function t n if j 20 return num 非遞迴版 原創 function suanfa n 10 else elseif age 15 elseif...
動態規劃 母牛生小牛問題
一頭剛出生的小母牛,4年後生一頭小母牛,以後每年生一頭,現有一頭剛出生的小母牛,問20年後共有多少頭牛?列舉前n年的情況 1 1 1 2 3 4 6 8 11。將規律抽象成公式 f 1 1 f 2 1 f 3 1 f n f n 1 f n 3 f n 表示第n年共有多少頭牛 f n 1 表示第n ...