假设一个楼梯有 N 阶台阶,人每次最多可以跨 M 阶。例如楼梯总共有3个台阶,人每次最多跨2个台阶,也就是说人每次可以走1个,也可以走2个,但最多不会超过2个,那么楼梯总共有这么几种走法:
我们这样看
1台阶楼梯走法为1,
2台阶楼梯走法为2,
3台阶楼梯走法为3,
4台阶楼梯走法为5,
5台阶楼梯走法为8,
我们可以得出规律,这其实是一个斐波那契数列,就很容易解决了
印象中有次面试被问到这个问题,所以在这里分享下
算法如下
<?php
/*
* 2015/3/4 update
* 1 2 3 5 8 13
*/
function fibonacci($n)
{
if ($n == 1) {
return 1;
}
if ($n == 2) {
return 2;
}
return fibonacci($n - 1) + fibonacci($n - 2);
}
for ($index = 1; $index < 10; $index++) {
echo fibonacci($index)."\n";
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。