正常可能会这么思考:我从第一节楼梯开始爬能有多少不能的爬法,这样会陷入无尽的循环,走入迷途。
所以我们应该换一种思路,我们从终点开始,那么是怎么到达终点的呢?假设一次能爬1阶或2阶,那么到达终点的时候就有两种爬法,那在第4阶或者第3阶是怎么爬的呢?进行递归调用
f(n) = f(n-1) + f(n-2)
斐波那契函数!
接下来来看一下OJ题目吧
题目:
这一节我们需要讨论的是一个递推的问题。在海贼理工学院有一个路飞君,他在爬楼梯的时候从来都是要么上 2 个台阶,要么上 3 个台阶。由于爬楼梯实在太无聊了,路飞君就开始尝试每天采用不同的方式上楼梯。如果路飞君回家需要爬 N 阶台阶,你能告诉路飞君,他爬楼梯回家有多少种不同的方式吗?
请注意,路飞君“先爬 3 个台阶后爬 2 个台阶”和“先爬 2 个台阶后爬 3 个台阶”是两种不同的回家方式。
code: