一只青蛙可以一次跳 1 级台阶或者一次跳 2 级台阶,例如:
跳上第 1 级台阶只有一种跳法:直接跳 1 级即可。
跳上第 2 级台阶有两种跳法:每次跳 1 级,跳两次;或者一次跳 2 级。
很多人拿到题目一般喜欢用正向暴力拆解,其实这道题不妨可以逆向分析一下,跳上n阶楼梯,最后一跳是不是必须在(n-1)阶楼梯上跳或者(n-2)阶楼梯上,我们令 f(n) 表示从第一级台阶跳上第 n 级台阶有几种跳法,那么可以得到以下公式:
f(n) = f(n-1) + f(n-2)
看到这道公式是不是很熟悉,没错,它就是斐波那契数列的递推公式,那我我们自然而然就可以使用斐波那契数列的思想来解决这道题目,1是直接递推公式,2考虑算法优化问题,参考我发布的另一篇简书《斐波那契数列--python》https://www.jianshu.com/p/24dca84ed41b