剑指offer_青蛙跳台阶
题目描述
一只青蛙一次可以跳上 1 级台阶,也可以跳上 2 级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法

解题思路:
当n=1时只有一种跳法

当n=2时,有两种跳法

跳 n 阶台阶,可以先跳 1 阶台阶,再跳 n-1 阶台阶;或者先跳 2 阶台阶,再跳 n-2 阶台阶。而 n-1 和 n-2 阶台阶的 跳法可以看成子问题,该问题的递推公式为:

首先是递归
1 public class Solution { 2 public int JumpFloor(int n) { 3 if(n<=2) return n; 4 return JumpFloor(n-1)+JumpFloor(n-2); 5 } 6 }
其次是循环的方法
1 public int JumpFloor(int n) { 2 if (n <= 2) 3 return n; 4 int pre2 = 1, pre1 = 2; 5 int result = 1; 6 for (int i = 2; i < n; i++) { 7 result = pre2 + pre1; 8 pre2 = pre1; 9 pre1 = result; 10 } 11 return result; 12 }
这题其实本质上和上一题的拼图方法一样,找到递推式就很简单了。

浙公网安备 33010602011771号