黑马程序员技术交流社区

标题: 各位大神,这道古典题,怎么解,求助 [打印本页]

作者: 大大的大孩    时间: 2015-8-28 23:00
标题: 各位大神,这道古典题,怎么解,求助
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
作者: BG6FVG    时间: 2015-8-28 23:02
好深奥!!!!!!!!!!!!
作者: a348639336    时间: 2015-8-28 23:11
这种题其实看着复杂只要推导前几个数就很好理解了
兔子的规律为数列1,1,2,3,5,8,13,21....
从第三项开始数值为前两项之和。
public static int fun(int n){
                if(n==1||n==2){    //如果是前两个月则兔子数是1
                return 1;
                }
                return (fun(n-1)+fun(n-2));    //第三个月开始为前两个月之和
        }
       
        public static void main(String[] args)
        {
                //定义要求第10 个月的兔子对数
                int n = 10;
                System.out.println("第"+ n +"个月的兔子对数为:" + fun(10));

        }
作者: zx0210    时间: 2015-8-28 23:20
本帖最后由 zx0210 于 2015-8-28 23:22 编辑

我不知道你有没有学过递归这个方法,定义一个递归函数能帮你解决这个问题,兔子各个月的数目为1,1,2,3,5,8,13,21..每个月的兔子个数都等于前两个月兔子的数目之和
public static int rab(int month){  //定义一个方法,返回值为兔子个数,数据类型为int
    if(month==1||month==2){  //1月与2月的兔子数目不变
        return 1;
    }else{
        return rab(month-1)+rab(month-2); //返回第month月的兔子数目(函数自身调用自己,完成递归)
    }
}
作者: sandyluo    时间: 2015-8-28 23:20
这个题目我看到过
作者: superhs    时间: 2015-8-28 23:23
递归算法
作者: ybbh182    时间: 2015-8-28 23:24
楼上有大神
作者: 阮文江    时间: 2015-8-28 23:29
没仔细研究过!
作者: 蚊子先生    时间: 2015-8-28 23:32
上面都是大神。。
作者: Qf-nice    时间: 2015-8-28 23:34
我是新手,不过来到这,我还是受教了
作者: 姜群    时间: 2015-8-28 23:40
public static int fun(int n){
                if(n==1||n==2){    //如果是前两个月则兔子数是1
                return 1;
                }
                return (fun(n-1)+fun(n-2));    //第三个月开始为前两个月之和
        }
        
        public static void main(String[] args)
        {
                //定义要求第10 个月的兔子对数
                int n = 10;
                System.out.println("第"+ n +"个月的兔子对数为:" + fun(10));

        }
作者: 大大的大孩    时间: 2015-8-29 10:45
superhs 发表于 2015-8-28 23:23
递归算法

过程呢,?????????????????
作者: 大大的大孩    时间: 2015-8-29 10:46
姜群 发表于 2015-8-28 23:40
public static int fun(int n){
                if(n==1||n==2){    //如果是前两个月则兔子数是1
        ...

高手啊,谢谢支持。。。。。。。。。。。。。
作者: ln0491    时间: 2015-8-29 10:46
递归算法,强大了
作者: kevin986745zk    时间: 2015-8-29 10:47
用一个递归就可以做出来,主要是思路!
作者: 大大的大孩    时间: 2015-8-29 11:04
kevin986745zk 发表于 2015-8-29 10:47
用一个递归就可以做出来,主要是思路!

可是想不出来怎么办。。。。。。。
作者: 大大的大孩    时间: 2015-8-29 11:05
kevin986745zk 发表于 2015-8-29 10:47
用一个递归就可以做出来,主要是思路!

可是想不出来怎么办。。。。。。。
作者: kevin986745zk    时间: 2015-9-2 14:49
大大的大孩 发表于 2015-8-29 11:05
可是想不出来怎么办。。。。。。。

上百度,一切都有可能!




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