前言
最近有道云笔记老是没响应,会员也这样,所以把算法的笔记公开到这个csdn,也算是公开的鞭策。
题目常练习起点位置: https://www.nowcoder.com/ta/coding-interviews?asc=false&order=knowledgePoint
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
考虑:
这就是个递归的问题,如果你再深入看,就又是Fabonacci 数列,这时你会采取while 循环,更快
从target - 2 或者target -1跳上来, 两种方法
边界:
target == 2 : return 2;
target == 1 : retrun 1;
代码:
public class Solution {
public int JumpFloor(int target) {
if (target == 2) return 2;
if (target == 1) return 1;
//else bigger than 2, let's recursive call it's grand...son
int sum1 = JumpFloor(target - 1) + 1;// TT 这里不需要加1 ,请理解递归
int sum2 = JumpFloor(target - 2) + 1;// TT 这里不需要加1 ,请理解递归
return sum1 + sum2;
}
}
修正如下:
// 修正TT 那里
public class Solution {
public int JumpFloor(int target) {
if (target == 2) return 2;
if (target == 1) return 1;
//else bigger than 2, let's recursive call it's grand...son
int sum1 = JumpFloor(target - 1);
int sum2 = JumpFloor(target - 2);
return sum1 + sum2;
}
}
/*
运行时间:561ms
占用内存:9384k
*/