描述
有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。
例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。
一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?
数据范围:输入满足 1 \le n \le 31 \1≤n≤31
输入描述:
输入一个int型整数表示第n个月
输出描述:
输出对应的兔子总数
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//1、对输入值进行遍历,依次进行计算。
while (sc.hasNext()) {
//2、取出每一行的数值
int array = sc.nextInt();
//3、将取值赋值给变量month,表示月份。
int month = array;
//4、繁殖期是三个月,第一个月,第二个月,第三个月。
int oneMonth = 1;
int twoMonth = 0;
int threeMonth = 0;
//5、因为从第三个月才开始繁殖。算法使用了交换法,第二个月时,一个月大的兔子就变成两个月了。所以算法要从第二个月开始,一个月的兔子已经赋值1了。
for (int i = 2; i <= month; i++) {
threeMonth = threeMonth + twoMonth;
twoMonth = oneMonth;
oneMonth = threeMonth;
}
System.out.println(oneMonth + twoMonth + threeMonth);
}
}
}
输入:
3
输出:
2