递归怎么写:状态定义与状态转移方程
因为要解决的问题都是「从 0 爬到 i」,所以定义 dfs(i)表示从 0 爬到 i有多少种不同的方法。
因为要解决的问题都是「从 0 爬到 i」,所以定义 dfs(i) 表示从 0爬到 i有多少种不同的方法。
分类讨论:
如果最后一步爬了 1 个台阶,那么我们得先爬到 i−1,要解决的问题缩小成:从 0 爬到 i−1有多少种不同的方法。
如果最后一步爬了 2 个台阶,那么我们得先爬到 i−2,要解决的问题缩小成:从 0 爬到 i−2有多少种不同的方法。
这两种方法是互相独立的,所以根据加法原理,从 0爬到 i的方法数等于这两种方法数之和,即
dfs(i)=dfs(i−1)+dfs(i−2)