- 递归算法
  - 概念理解
    - 生活中的递归例子
      - 掩耳盗铃、从前有座山的故事
    - 程序设计中的递归特点
      - 必须有结束条件
  - 实现要素
    - 阶乘问题分析
      - 数学公式:n阶乘等于n乘以n-1阶乘
      - 递归分解:问题规模逐渐缩小
      - 结束条件:0阶乘等于1
    - 阶乘代码实现
      - 主函数调用fact(5)
      - fact函数逻辑:n等于0时返回1,否则返回n乘以fact(n-1)
    - 设计前提总结
      - 问题可分解为类似子问题
      - 子问题规模更小
      - 最小问题有直接解
  - 数值与非数值递归实现
    - 数值递归
      - 阶乘问题的数学推导
      - 菲波纳基数列的递归设计
    - 非数值递归
      - 汉诺塔问题分析
        - 问题背景与规则
        - 三个圆盘的移动过程
        - N个圆盘的递归分解
          - 上面N-1个圆盘借助C移动到B
          - 第N个圆盘直接移动到C
          - 剩余N-1个圆盘借助A移动到C
        - 递归结束条件:一个圆盘直接移动
      - 汉诺塔代码实现
        - 函数参数:圆盘数量N、起始塔X、辅助塔Y、目标塔Z
        - 移动次数计算:2的N次方减1
        - 示例:64个圆盘需要约5849亿年
  - 课后拓展
    - 八皇后问题的递归实现

版权所有:全国高校教师网络培训中心

技术支持:北京畅想数字教育科技股份有限公司

联系地址:北京市西城区德外大街4号院A座2层

咨询电话:400-6699-800

京ICP备08008005号 京公网安备110102004467