黑马程序员技术交流社区

标题: 古典兔子问题,用递归算法求解 [打印本页]

作者: xanx14710    时间: 2016-3-7 11:22
标题: 古典兔子问题,用递归算法求解
有一对兔子,3个月起每个月都生一对兔子,小兔子长到第4个月后每个月又生一对兔子,假设兔子都不死,问每个月兔子总数为多少?
首先我们要明白题目的意思指的是每个月的兔子总数(这里应该是按对来计算的);我们假设将兔子分为小中大三种,兔子从出生后每三个月就生出一对兔子,那么我们假定第一个月为小兔子,第二个月为中兔子,第三个月之后就为老兔子(老兔子每过三个月还会再生的),那么第一个月分别有1、0、0,第二个月分别为0、1、0,第三个月分别为1、0、1,第四个月分别为,1、1、1,第五个月分别为2、1、2,第六个月分别为3、2、3,第七个月分别为5、3、5……
兔子总数分别为:1、1、2、3、5、8、13……
于是得出了一个规律,从第三个月起,后面的兔子总数都等于前面两个月的兔子总数之和。
于是有了下面的编程:
public class Demo1_String {
public static void main(String[]args){
        for(int i=1;i<20;i++){
                int rabbit=rabbitNum(i);
                System.out.println("第"+i+"个月的兔子总数为"+rabbit);
        }
        }
public static int rabbitNum(int x){
        int rabbit=1;
        if(x==1||x==2){
                return rabbit;
        }else{
                rabbit=rabbitNum(x-1)+rabbitNum(x-2);
                return rabbit;
        }
}
作者: xanx14710    时间: 2016-3-7 11:27
不好意思,写错题了,是小兔子长到第3个月后每个月又生一对兔子
作者: 超人d咖啡也加糖    时间: 2016-3-7 11:50
雁过留声,人过留名,加油!
作者: and4576sdo    时间: 2016-3-7 12:05
感谢楼主的分享了。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2