您的位置:首页 > 职场人生

笔试面试之n台阶问题

2010-06-21 22:23 316 查看
一个台阶总共有n级,如果一次可以跳1级,也可以跳2级。求总共有多少总跳法,并分析算法的时间复杂度。

首先我们考虑最简单的情况。如果只有1级台阶,那显然只有一种跳法。如果有2级台阶,那就有两种跳的方法了:一种是分两次跳,每次跳1级;另外一种就是一次跳2级。
此问题分开来看,可以看为第一次跳,与后面的跳,第一次跳有两种跳法,一次跳一级,和一次跳两级。那么,当第一次跳一级时,这种跳法
总的跳法为f(n-1),当第一次跳2级时,总跳法为f(n-2).因此,f(n)=f(n-1)+f(n-2)。有分治的思想。

我们把上面的分析用一个公式总结如下:
/ 1 n=1

f(n)= 2 n=2

/
f(n-1)+(f-2) n>2

递归可以解,用栈也可以,用矩阵也可以。
转自:http://zhedahht.blog.163.com/blog/static/25411174200731844235261/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: