No27、跳台阶问题(递归)

来源:互联网 发布:linux如何添加sgid 编辑:程序博客网 时间:2024/05/19 13:55

题目:一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。
求总共有多少总跳法,并分析算法的时间复杂度。
这道题最近经常出现,包括MicroStrategy等比较重视算法的公司
都曾先后选用过个这道题作为面试题或者笔试题。

 

解题思路:

 

经典的青蛙跳台阶.....第一次看到果断被干掉了....后来在网上看了一下..这尼玛就是斐波那契数列....疯了...

 

假设f(n)是到第n级台阶的跳数的总数

青蛙跳到第n阶台阶有两种方法,从第n-2级台阶跳2级和从第n-1级台阶跳1级..

这样就转化成求青蛙到达n-2级台阶的跳数和到达第n-2级台阶的跳数...

得到递推公式:

f(x) = f(x-1) + f(x -2);

 

斐波那契数列....

 

public class Q27 {public static void main(String[] args) {int stage = 5;System.out.println(getStep(stage));}public static int getStep(int stage){if(stage == 1 || stage == 0)return 1;return getStep(stage-1) + getStep(stage - 2); }}


 

原创粉丝点击