日期:2014-05-20  浏览次数:20631 次

各位大神我想请教一个关于古代兔子的算法问题
这个代码是我从网上拿来的,我不知道是什么意思,我想了好久不明白,希望各位大神给我解释一下,谢谢啦!


package cn.com.flywater.FiftyAlgorthm;
public class FirstRabbit {
public static final int MONTH = 15;
public static void main(String[] args) {
   long f1 = 1L, f2 = 1L;
   long f;
   for(int i=3; i<MONTH; i++) {
    f = f2;
    f2 = f1 + f2;
    f1 = f;
    System.out.print("第" + i +"个月的兔子对数: ");
    System.out.println(" " + f2);
   }
}
}
算法 古代兔子 斐波那契数列?

------解决方案--------------------
就是这个月的兔子数是上两个月兔子数之和的意思
------解决方案--------------------
这个就是Fibonacci数列,小学三年级奥数都有。

科普扫盲
http://zh.wikipedia.org/wiki/%E6%96%90%E6%B3%A2%E9%82%A3%E5%A5%91%E6%95%B0%E5%88%97
------解决方案--------------------
Fibonacci数列有一个很有意思的特性,那就是 前一项/后一项 越往后来越接近黄金分割数(0.618)。

给智力比较好的小学一年级学生做“找规律填数:1 1 2 3 5 8 13 __ __”,都能做出来。
------解决方案--------------------
  f = f2;
    f2 = f1 + f2;
    f1 = f;

 f1        f2
 x个月     x+1各月
1,
f=f2;
f就变成了x+1个月的兔子数。
2,
f2= f1+f2;
f2变成x个月加上x+1各月的兔子数。也就是x+2个月的兔子数。

3,
f1 = f;
f1就变成了x+1各月的兔子数。


这样一轮操作后 f1,f2 就向前推进了一步,从(x,x+1)   -->(x+1,x+2)各月的兔子数。