public class Solution { // 第一种:递归实现 // 出口:当台阶数为1,2时结束递归 public int JumpFloor(int target) { return target <= 2? target : JumpFloor(target - 1) + JumpFloor(target - 2); } // 第二种:正向求解 // 已知台阶数为1时有一种跳法,台阶数为2时有俩种跳法, // 台阶数为 3,4,5... n = (n - 1) + (n - 2)级台阶的跳法 public int JumpFloor(int target) { if(target == 1 || target == 2){ return target; } // a,b 初始值为跳1级台阶,跳2级台阶的跳法次数 int a = 1,b = 2; for(int i = 3; i<=target; i++){ // 跳当前台阶的跳法 b = b + a; // 跳当前台阶上一级的跳法 a = b - a; } return b; } public int JumpFloor(int target) { int a = 1,b = 1; for(int i = 1; i<target; i++){ b = b + a; a = b - a; } return b; } }