【程序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循环做了