脑子真得老用,不用就跟没脑一样
在下编程基础为0,今天看见一个java编程问题,虽然把解决原理弄明白了,但那三个变量的重新赋值怎么看都没明白。。。在没看到这问题之前,我一直觉得自己领悟能力还行,看过之后觉得自己跟猪脑差不多。古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
//这是一个菲波拉契数列问题
public class lianxi01 {
public static void main(String[] args) {
System.out.println("第1个月的兔子对数: 1");
System.out.println("第2个月的兔子对数: 1");
int f1 = 1, f2 = 1, f, M=24;
for(int i=3; i<=M; i++) {
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println("第" + i +"个月的兔子对数: "+f2);
}
}
}
以上三行红字部分,绕了半天没绕懂。 首先,这是一个斐波拉契数列,每个月的兔子总数是,1,1,2,3,5,8,13……类推,f2是当前月的兔子总数,f1是前一个月的兔子总数,f就相当于是一个临时存放变量。所以,三步如下:
f = f2; //把上一个月的兔子总数存入f中,
f2 = f1 + f2; //计算出本月的兔子数,存入f2,
f1 = f; //把上一个月的兔子数存入f1, 好难啊。。。。。。。。。。。 楼主加油,鱼C加油!我们都看好你哦! 菲波拉契数列 经典问题 很多种方法的 你百度下 这个就是个累加的算法 仔细分析下断点看下它的值 就明白了
页:
[1]