黑马程序员技术交流社区

标题: 我是基础班学员,求解答个问题!! [打印本页]

作者: 四季    时间: 2015-4-3 21:17
标题: 我是基础班学员,求解答个问题!!

/*
【程序1】
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,
小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问十个月的兔子对数为多少?

*/



public class DemoTu
{
        public static void main(String[] args)
                {
                int n = 10;
                System.out.println("第"+n+"个月兔子总数为"+fun(n));
            }
        private static int fun(int n)
        {
                if(n==1 || n==2)
                   return 1;
                else
                   return fun(n-1)+fun(n-2);
        }
}


谁能帮我把这个代码清楚的解释一遍!求求。。。
作者: 18234133910    时间: 2015-4-3 21:27
当n为1 或2时  只有这一对兔子存在,当n等于3时,这里采用的是递归算法,就是方法内部调用方法,fun(n-1)和fun(n-2)当n=3时也就是1+1=2 后面的同理,也就是比3大1就会多加1对,每次递归,最终得到总数。
作者: 怀念子龙    时间: 2015-4-3 21:32
这个就是斐波那契数列嘛。1 1 2 3 5 8.........   就是前面两项之和等于第三项。
数学表达就是 f(n)=f(n-1)+f(n-2);
       已知 f(1)=1;f(2)=1;  
求f(10);
然后再用函数递归解决了。建议自己网上百度一下递归的资料。
作者: WOR    时间: 2015-4-3 21:59
斐波那契数列 要从第三个月开始算的 这就是下面那段的意义
作者: onlybin2015    时间: 2015-4-3 22:08
这个就是斐波那契数列嘛。1 1 2 3 5 8.........   就是前面两项之和等于第三项。 数学表达就是 f(n)=f(n-1)+f(n-2);        已知 f(1)=1;f(2)=1;   求f(10); 然后再用函数递归解决了。建议自己网上百度一下递归的资料
作者: showdy    时间: 2015-4-3 22:12
斐波那契函数,方法的递归就可以解决。
作者: tubao1991    时间: 2015-4-3 23:15
虚心求教




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