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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

有一对兔子,从出生后第3个月开始每个月生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假设兔子不死,问每个月兔子的对数。public class
{
     public static void main(String[] args)
     {
        int f1=1,f2=1,f,m=24;
       for(int x=3;x<=m;x++)
       {
           f=f2;
           f2=f1+f2;
           f1=f;
          System.out.println("第"+i+"月兔子对数是:"+f2);
        }
    }
}
那位大神能解释一下代码思路是什么不,看了半天没看懂?

5 个回复

正序浏览

好吧,我被自己打败了,恍然大悟。
回复 使用道具 举报
w401634075 发表于 2015-5-9 23:50
我能说,在难度大的问题上看到你回答的很好,可是又问一些比较低难度的题目。看不出你的水深浅。。。。。。 ...

我是菜鸟啊,有时候转不那个弯就想不通
回复 使用道具 举报
我能说,在难度大的问题上看到你回答的很好,可是又问一些比较低难度的题目。看不出你的水深浅。。。。。。。。
回复 使用道具 举报
第一次
f=1
f2=1+1
f1=1
第二次仍然只有一对能繁殖
f = 2
f2 = 1+2
f1=2
第三次有两对能繁殖,所以就是3对原有的,加上两对繁殖的两对
f =3
f2 = 2+3
f1 =3

然后就很简单了,思路就是1,1,2,3,5,8,13
既后一个数等于前两个数之和。这前两个数 第一个为 n-2 第二个为n-1
所以还可以这样写,

int fib(int n)
{
return (fib(n-1)+fib(n-2));
}

for(i=3;i<=20;i++)
{
fib(i);
}
回复 使用道具 举报
顶                        
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马