-- 常见的递归问题
-- 几种常见的尝试类型
介绍递归和动态规划
暴力递归:
1,把问题转化为规模缩小了的同类问题的子问题
2,有明确的不需要继续进行递归的条件(base case)
3,有当得到了子问题的结果之后的决策过程
4,不记录每一个子问题的解
动态规划
1,从暴力递归中来
2,将每一个子问题的解记录下来,避免重复计算
3,把暴力递归的过程,抽象成了状态表达
4,并且存在化简状态表达,使其更加简洁的可能
1.
求n!的结果
2.
汉诺塔问题
打印n层汉诺塔从最左边移动到最右边的全部过程
3.
打印一个字符串的全部子序列,包括空字符串
4.
打印一个字符串的全部排列
进阶
打印一个字符串的全部排列,要求不要出现重复的排列
5.
母牛每年生一只母牛,新出生的母牛成长三年后也能每年生一只母牛,假设不会死。求N年后,母牛的数量。
<