这个代码是我从网上拿来的,我不知道是什么意思,我想了好久不明白,希望各位大神给我解释一下,谢谢啦!
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)各月的兔子数。