【算法13】跳台阶问题

题外话:今天实在是太累了,但是为了能够坚持下去,还是决定写一个,不过题目很水,权当娱乐吧!

【题 目】一个台阶一共有n阶,一次起跳可以跳一阶,也可以跳二阶。问总共有多少中跳法,并对时间复杂度进行分析。

【思 路】由特殊到一般的思路吧,如果只有一阶,那么只有一种跳法;如果有2阶,那么有2中跳法(跳1阶再跳1阶,一次跳2阶);那么如果有n阶呢?假设对于n阶的阶梯,我们有f(n)中跳法;那么n阶时,我们考虑如果第一次跳共有两种选择:第一次跳了1阶,剩下n-1阶有f(n-1)种跳法;第一次跳了2阶,剩下的n-2阶有f(n-2)种跳法,那么总共的跳法数就是f(n-1)+f(n-2)。到这里我们可以看出这就是斐波那契数列的递归公式,只是前两项稍有区别,写成数学表达式如下:

  至于具体斐波那契数列求解的代码以及算法的时间复杂度分析,在【算法02】中我们已经做过非常详细的讨论,不再赘述,有兴趣的同学可以回看一下。


注:

1)本博客所有的代码环境编译均为win7+VC6。所有代码均经过博主上机调试。

2)博主python27对本博客文章享有版权,网络转载请注明出处http://www.cnblogs.com/python27/。对解题思路有任何建议,欢迎在评论中告知。

原文地址:https://www.cnblogs.com/python27/p/2278489.html