A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始


/*
【程序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);
        }
}


谁能帮我把这个代码清楚的解释一遍!求求。。。

6 个回复

正序浏览
虚心求教
回复 使用道具 举报
斐波那契函数,方法的递归就可以解决。
回复 使用道具 举报
这个就是斐波那契数列嘛。1 1 2 3 5 8.........   就是前面两项之和等于第三项。 数学表达就是 f(n)=f(n-1)+f(n-2);        已知 f(1)=1;f(2)=1;   求f(10); 然后再用函数递归解决了。建议自己网上百度一下递归的资料
回复 使用道具 举报
斐波那契数列 要从第三个月开始算的 这就是下面那段的意义
回复 使用道具 举报
这个就是斐波那契数列嘛。1 1 2 3 5 8.........   就是前面两项之和等于第三项。
数学表达就是 f(n)=f(n-1)+f(n-2);
       已知 f(1)=1;f(2)=1;  
求f(10);
然后再用函数递归解决了。建议自己网上百度一下递归的资料。
回复 使用道具 举报
当n为1 或2时  只有这一对兔子存在,当n等于3时,这里采用的是递归算法,就是方法内部调用方法,fun(n-1)和fun(n-2)当n=3时也就是1+1=2 后面的同理,也就是比3大1就会多加1对,每次递归,最终得到总数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马