10.3 跳台阶

题目链接

NowCoder

题目描述

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

10.3 跳台阶 - 图2

解题思路

当 n = 1 时,只有一种跳法:

10.3 跳台阶 - 图3

当 n = 2 时,有两种跳法:

10.3 跳台阶 - 图4

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

10.3 跳台阶 - 图5

  1. public int JumpFloor(int n) {
  2. if (n <= 2)
  3. return n;
  4. int pre2 = 1, pre1 = 2;
  5. int result = 0;
  6. for (int i = 2; i < n; i++) {
  7. result = pre2 + pre1;
  8. pre2 = pre1;
  9. pre1 = result;
  10. }
  11. return result;
  12. }

10.3 跳台阶 - 图6

space_01 补充便于理解(换方向)

10.3 跳台阶 - 图7