现在的位置: 首页 > 综合 > 正文

java程序入门50题分析:001

2012年10月01日 ⁄ 综合 ⁄ 共 985字 ⁄ 字号 评论关闭

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







抱歉!评论已关闭.