27.跳台阶问题(递归)
题目:一个台阶总共有 n 级,如果一次可以跳 1 级,也可以跳 2 级。
求总共有多少总跳法,并分析算法的时间复杂度。
这道题最近经常出现,包括 MicroStrategy 等比较重视算法的公司
都曾先后选用过个这道题作为面试题或者笔试题。
思路:不难 注意边界 就是时间复杂度我没求出来 上网搜的答案
/* 27.跳台阶问题(递归) 题目:一个台阶总共有 n 级,如果一次可以跳 1 级,也可以跳 2 级。 求总共有多少总跳法,并分析算法的时间复杂度。 这道题最近经常出现,包括 MicroStrategy 等比较重视算法的公司 都曾先后选用过个这道题作为面试题或者笔试题。 */ #include <stdio.h> int jump(int n) { if(n == 1 || n == 2) //注意 边界情况 { return n; } else if(n <= 0) { return 0; } else { int r1 = jump(n - 1); int r2 = jump(n - 2); return r1 + r2; } } int main() { int ways = jump(4); return 0; } //斐波那契数列 时间复杂度 O(2^n)