3.顽猴爬台阶
一天一只顽猴想要从山脚爬到山顶途中经过一个有n个台阶的阶梯,但是这个猴子有个习惯,每一次只跳1步或3步。 试问?猴子通过这个阶梯有多少种不同的跳跃方式
输入描述:输入只有一个这个数n 0<n<50 此阶梯有多个台阶
输出描述:有多少种跳跃方式
实例:
输入 50 输出 122106097
输入 3 输出2
查看代码
import java.util.*;
public class Demo3 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = Integer.parseInt(sc.nextLine());
int f1 = 1;
int f2 = 1;
int f3 = 2;
int f4 = n == 3 ? 2 : 1; //f4用来存储结果
for(int i = 4; i <= n; i++){
f4 = f1 + f3;
f1 = f2;
f2 = f3;
f3 = f4;
}
System.out.println(f4);
}
}
总结:这里处理的方式很巧妙,但是总感觉掌握不牢。
关键的关系式是 fn = fn-1 + fn-3 常规的思路是不断地根据前面的数据产生后面的数据,排列成一排。但是在计算机中,这里巧妙了只运用了四个变量,通过计算并赋值的方式不断地得出结果。