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)