【算法百题之一】n级楼梯有几种跳法
大家好,我是Lampard~~
很高兴又能和大家见面了,接下来准备系列更新的是算法题,一日一练,早日升仙!
今天的问题是:
有个家伙叫Lampard,他很喜欢跳楼梯。Lampard一次可以选择跳一级,可以跳选择两级.....可以选择跳n(任意)级。
那么问题来了,现在有一个n级的楼梯,他一共能够有多少种跳法呢???
下面是我解题的思路:
我首先把前三次跳楼的次数结果写出来:
(1)如果楼梯只有一级,毫无疑问只有一种可能
(2)如果楼梯有两级,我们可以有两种选择,一种是先(0到1到2),另一种是直接(0到2)
(3)如果楼梯有三级,那么我们第一步跳一级的话,则剩下的可能是f(2) (0到1到2到3)或者(0到1到3)
第一步跳两级的话,剩下的可能是f(1),也就只有一种可能(0到2到3)
第一步跳三级的话就一步到位了。(直接0到3)
做到这里我就开始思考,在手写纸上的红字上,我们观察的答案,究竟是f(n)=f(n-1)+n-1呢还是 f(n)=f(n-1)*2呢?
于是我们通过f(4),判断出是第二种情况,通过f(5)验证正确。所以结果就是一个很简单的递归le:
f(n)={
1, n =1
2*f(n-1) n>=1
}
代码如下:
结果如下:
(练手题目请各位大哥不要纠结我的程序健壮性...)
OK,今天的博客就到这里,谢谢大家!!!