题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
这道题对于经常刷算法的人来说,并不算难,这里提供了两种解决方法,分别为动态规划和递归。
//递归
public int JumpFloor(int target) {
if (target == 1 || target == 2)
return target;
else
return JumpFloor(target-1) + JumpFloor(target-2);
}
//运行时间:446ms,占用内存:9296k
//动态规划
public int JumpFloor(int target) {
if (target == 1 || target == 2)
return target;
int a = 1, b = 2, temp = 0;
for (int i=3; i<=target; i++){
temp = a + b;
a = b;
b = temp;
}
return temp;
}
//运行时间:18ms,占用内存:9252k
可以看出,动态规划的运行时间远低于递归时间,至于为何如此,这里提供大家阅读下面的文章,该文章详细介绍了递归和动态规划,有兴趣的可以看看。