You are climbing a stair case. It takes n steps to reach to the top.
Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?
Note: Given n will be a positive integer.
你要上台阶,可以一次上一个或者一次上两个,一共N个台阶问多少种上法。这个题有很多中变种,比如某公司笔试题,猴子吃香蕉一次一个或两个,吃N个香蕉一共几种吃法。
这个题可以看做斐波那契数列的变种题目。假设上n个台阶有f(n)种上法,那么往前推演,走到n阶的最后一步可以是2两步也可以是一步,那么f(n)=f(n-1)+f(n-2),显然这是个斐波那契数列,可以用递归求解。代码如下:
众所周知,递归是低效的,这道题采用递归很容易超时,那么还可以采用DP的方法求解:
最后还有一种比较无赖的方法,直接调用斐波那契数列计算公式……