剑指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 }

这题其实本质上和上一题的拼图方法一样,找到递推式就很简单了。

posted @ 2019-08-13 09:14  chyblogs  阅读(207)  评论(0)    收藏  举报