【程式1】
題目:古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,小兔子長到第三個月後每個月又生一 對兔子,假如兔子都不死,問每個月的兔子總數為多少?
答案在下面
1.程式分析:
親愛的你一定看到答案,拿起筆,在草稿紙上畫起了圖你,然後找規律,這是十分好的一件事情。我也是這樣的,那麼下面讓我們來看看吧。
1---1
2---1
3---1+1 (小兔子三個月後每個月又會有一對兔子)
4---1+1+1
5---1+1+1+1+1(現在有兩對兔子在生了)
6--1+1+1+1+1+1+1+1(現在有三對兔子在生了) 要看有多少個兔子在生,值要看這行前面的2行有多少個兔子就行)
7--1+1+1+1+1+1+1+1+1+1+1+1+1(4對了)要看有多少個兔子在生,值要看這行前面的2行有多少個兔子就行)
8--1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1((5對了)要看有多少個兔子在生,值要看這行前面的2行有多少個兔子就行)
9--1+1+1+1+1+1+1+1+1+1+1+1+1+-1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1((13對了要看有多少個兔子在生,值要看這行前面的2行有多少個兔子就行)
好了 規律找到了 我們來統計了
1 ,1,2,3,5,8,13,21,
兔子的規律為數列1,1,2,3,5,8,13,21....
那就是n的時候,就是前面兩個的和!!!
public int comRabNum(int n) //返回的是 當前月兔子的個數
那麼
public int comRabNum(n-1) //返回的是當前月前一個月兔子的個數
public int comRabNum(n-2) //返回的是當前月前2個月兔子的個數
所以了
package endual;
public class Qanswer {
//這個題目 n 是返回第n個月有多少只
//那麼 n-1 是返回 n-1個月有多個兔子
//那麼n-2是返回 n - 2個月多少個兔子嘍
public int rabbit(int n) {
int res = 0 ;
if(1 == n || 2 == n) {
return 1 ;
}
return rabbit(n-1) + rabbit(n-2) ;
}
}
這個就是答案了(很顯然用遞迴)-----------------記得結果乘以2啊,要我們求兔子的數目哦
當然還可以用for迴圈做了