跳台阶
题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
第一种方法:采用递推的方式
class Solution { public: int jumpFloor(int number) { //递推公式f[n] = f[n -1] + f[n - 2] int f[number]; f[0] = 1; f[1] = 2; for (int i = 2; i < number; i++) { f[i] = f[i - 1] + f[i - 2]; } return f[number - 1]; } };
第一种方法:采用递归的方式
1 class Solution { 2 //递归的方法 3 public: 4 int jumpFloor(int number) { 5 if (number <= 0) { 6 return -1; 7 } 8 if (number == 1) return 1; 9 if (number == 2) return 2; 10 return jumpFloor(number - 1) + jumpFloor(number - 2); 11 } 12 };
两种方法的运行时间与空间对比:
解决问题 | 提交时间 | 状态 | 运行时间 | 占用内存 | 使用语言 |
跳台阶 | 2018-07-26 | 答案正确 | 463 ms | 604K | C++ |
跳台阶 | 2018-07-26 | 答案正确 | 4 ms | 480K | C++ |
采用递推的方法运行时间远低于递归的方法,占用内存也小于递归的方法!