【剑指offer】跳台阶
跳台阶
http://www.nowcoder.com/questionTerminal/8c82a5b80378478f9484d87d1c5f12a4
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
1、思路分析
还是利用递归的思想,先单独讨论边界情况即target=1或2时,后面>=3级的结果等于前一级的跳法加上前两级的跳法。对比了别人的答案,发现递归会影响程序的执行速度,迭代是递归的直接写法,但执行速度较快。
2、代码
public class Solution { public int JumpFloor(int target) { if(target == 1) return 1; if(target == 2) return 2; return (JumpFloor(target-1) + JumpFloor(target-2)); } } public class Solution { public int JumpFloor(int target) { if (target <= 2) return target; int pre1 = 2, pre2 = 1; int cur = pre1 + pre2; for(int i = 3; i <= target; i++) { cur = pre1 + pre2; pre2 = pre1; pre1 = cur; } return cur; } }
3、复杂度分析
还不太会,加油。