题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。
求总共有多少总跳法,并分析算法的时间复杂度。
分析:
采用递归思想,从第n个台阶开始研究,第 n 个台阶有两种跳法,一种是跳一级,还有 n -1级台阶要跳,另一种是跳两级,还有n -2级需要跳。
公式如下:
f(n) = f(n-1) + f(n-2),
其中 f(1) = 1, f(2) = 2。
实现如下:
#include<iostream> using namespace std; int findSteps(int n) { if(n < 1) return 0; if(n == 1) return 1; if(n == 2) return 2; return findSteps(n-1) + findSteps(n-2); } int main() { for( int i = 0; i < 10; i ++) cout << i << "step has num: " << findSteps(i) << endl; return 0; }
输出结果为:0step has num: 0
1step has num: 1
2step has num: 2
3step has num: 3
4step has num: 5
5step has num: 8
6step has num: 13
7step has num: 21
8step has num: 34
9step has num: 55
23. 微软面试题:跳台阶问题
最新推荐文章于 2021-02-28 14:22:38 发布