兔子问题(斐波那契数列)java

package guigui.suanfa;
import java.util.Scanner;
/*
 * 
  * 有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 
 *1.程序分析: 兔子的规律为数列1,1,2,3,5,8,13,21..
 *思路:1 当月的兔子数量=上个月兔子的数量+上上个月的兔子数量
 *2.我们需要设置三个变量  当月的 兔子数量,now  上个月的兔子数量old 上上个月的lastold,当然还有个时间变量time
 *
 */

public class rabbit{

public static void main(String[] args) {
//第一个月的兔子数量为1
int now=1;
//第一个月没上个月所以为0;
int old=0; 
//同上
int lastold=0;
int time=1;
System.out.println("请输入你需要了解几个月兔子的数量:");
//接收键盘输入的内容赋值给timeguigui
int timeguigui=new Scanner(System.in).nextInt();
//循环遍历月份
for(time=1;time<=timeguigui;time++){
//if判断 月份等于1或者二 当月的兔子都是1
if(time==1||time==2){
now=1;
}else{
//当月的兔子数量=上个月兔子的数量+上上个月的兔子数量
now=lastold+old;
}
System.out.println("第"+time+"个月,兔子的数量为"+now+"只");
// 每个月打印完后(进入下一轮循环之前)这个月的兔子变成上个月的,上个月的变成上上月的
//其实一直困扰我的是这个地方,看了那么多关于这个算法的代码,搞不懂这个地方的意义,愿可以帮助和我一样在这地方不明白的人
//当你在执行下一轮循环的时候上个月的变为上上额月
lastold=old;
//当月变为上个月
old=now;
}
}
}

你可能感兴趣的:(基础算法学习)