题目:https://www.nowcoder.com/ta/coding-interviews?page=1
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
理解:
跟之前的分析有相似的地方,假设跳n级台阶有F(n)种方式,那么可能的情况有,先跳1级、或者先跳2级、或者先跳4级、…、或者先跳n-1级、或者直接跳到n级.
相应的:先跳1级后有F(n-1)种,先跳2级后有F(n-2)种,…,跳n-1级有F(1)种,值得注意的是直接跳到n级台阶为1种
于是:F(n)=F(n-1)+F(n-2)+F(n-3)+…+F(3)+F(2)+F(1)+1
1 | class Solution1: |
1 | method = Solution1() |
16
根据递推公式:$F(n)=2^{(n-1)}$
1 | class Solution2: |
1 | method = Solution2() |
16
1 |