黑马程序员技术交流社区

标题: 菲波拉契数列问题,看不懂啊,请大神指点 [打印本页]

作者: csu050416    时间: 2015-5-9 23:22
标题: 菲波拉契数列问题,看不懂啊,请大神指点
有一对兔子,从出生后第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);
        }
    }
}
那位大神能解释一下代码思路是什么不,看了半天没看懂?

作者: 付长云    时间: 2015-5-9 23:46
顶                        
作者: 2666fff    时间: 2015-5-9 23:49
第一次
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);
}
作者: w401634075    时间: 2015-5-9 23:50
我能说,在难度大的问题上看到你回答的很好,可是又问一些比较低难度的题目。看不出你的水深浅。。。。。。。。
作者: csu050416    时间: 2015-5-9 23:56
w401634075 发表于 2015-5-9 23:50
我能说,在难度大的问题上看到你回答的很好,可是又问一些比较低难度的题目。看不出你的水深浅。。。。。。 ...

我是菜鸟啊,有时候转不那个弯就想不通
作者: csu050416    时间: 2015-5-9 23:58
2666fff 发表于 2015-5-9 23:49
第一次
f=1
f2=1+1

好吧,我被自己打败了,恍然大悟。




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