牛生牛 兔子生兔子問題

2021-10-05 16:27:59 字數 1520 閱讀 3783

首先分析問題:面對這樣的繁殖問題,可以考慮遞推;個人第一次面對這種問題時的思路過程:

1.明確我的目標我要求第n年,那麼如果我要求第100年怎麼辦?

我發現,我很難算出第100年的情況。

2. 那我退而求其次,在紙上列出**,看能不能找出什麼規律。

第零年第一年

第二年第三年

第四年第五年

第六年123

46913

找規律,假如能找出乙個數學公式的話,問題就容易解決了。

分析**:前四年都是開始的母牛生下的孩子。從第四年開始,第一年出生的牛也開始生下孩子。寫出分解運算,聯想之前接觸過的一些陣列。第四年的6會不會是第三年加上第二年呢?4+3為7,顯然不合理。再分析,6=4+2。

這個時候,結合實際問題。牛可以分解為:已經存在的牛+這一年生育的牛。

那麼已經存在的牛是第三年有的牛。問題解決了一半。

3. 這個時候需要分析,這一年生育的牛。根據一般規律。6=4+2;9=6+3;13=9+4;再結合題目中,牛在第三年成熟,不難發現,這一年生育的牛是三年前成熟的牛。

4. 我們得到了數列的單項公式。an=a(n-1)+a(n-3)

5. 接下來進行**實現。大致如下:

/*有一頭母牛,它每年年初生一頭小母牛。每頭小母牛從第四個年頭開始,

每年年初也生一頭小母牛。程式設計實現在第n年的時候,共有多少頭母牛?

分析:類似於兔子生兔子的問題

牛的總數等於,前一年的牛+出生的牛(n-3);

遞迴過程中,子問題,n-1年的牛也為:前一年的牛+出生的牛(n-3)

n-3年的牛也為:前一年的牛+出生的牛(n-3)

遞迴結束條件:n=4時,第一次有出生的牛成熟。因該為n等於1,2,3時的值

*/#include

using

namespace std;

intf

(int n)

//生的牛的總數是,三年前的牛的數目。 因為牛第四年才能生育

intmain()

總結一下這種題目的思路:

這種題目做多以後,再做,不由自主的會想起遞迴。

想到遞迴,就要分解出來第n年的數目(這裡不妨假設n超過遞迴的結束條件),可以想乙個具體的數字。

寫f(n)=f();的公式。這一類問題,n年的數目,分兩類,乙個是n-1年的牛的數目,這個數目是已經存在的牛。還有f(n-3)的牛,這個數目是生育出來的牛(牛一年只能生育乙隻小牛,所以數目與f(n-3)相同。 ps:大家可以試一下如果一頭牛可以生兩隻,或者更多的情況。或者每一年會死某個數目的牛)。

由此可得遞迴公式f(n)=f(n-1)+f(n-3)。

接下來就是**的實現。

下面放上**的。

之後會詳細記錄學習c++、資料結構、演算法設計與分析過程中刷到的題目和感悟。僅供自己學習使用,如果恰好這篇文章能幫到你,不甚榮幸,需要**的自行拿走,寫錯的請多多包容,共同學習,共同進步。

兔子生兔子問題

問題描述 兔子生兔子問題 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對 兔子,假如兔子都不死,問每個月的兔子總數為多少?假設我們要求列印出第乙個月到第二十個月的兔子總數 可以得出規律 第乙個月的兔子總數是1,第二個月的兔子總數是1,從第三個月開始,兔子總數是前...

兔子生兔子問題

問題描述 有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少 分析 這道題我們可以把兔子分為三個階段,幼崽 成年,生育 實際月份 幼崽數量 成兔數量 兔子總數11 0120 1131 1241 2352 3563 587...

生兔子問題

很有意思的面試題大家快來看看 一對小兔子一年後長成大兔子 一對大兔子每半年生一對小兔子。大兔子的繁殖期為4年,兔子的壽命是6年。假定第一年年初投放了一對小兔子,試程式設計計算,第n年末總共會有多少對兔子。n由鍵盤輸入 請針對物件導向程式設計 兔子類using system using system....