递归recursion_韩顺平听课笔记

1.递归解决什么问题

什么是递归:

  • 方法自己调用自己,每次调用传入不同的变量(控制结束)

递归能解决什么问题:

  • 汉诺塔:五个盘,要想把最后一块盘放到c塔,需要先移动四个盘到b塔;要把四个盘移动到b塔,需要先将上三个盘移动到c塔;要将上三个盘移动到c塔,需要先把上两个盘移动到b塔;要将上两个盘移动到b塔,需要先将最上面一个盘移动到c塔;(递归)
  • 递归解决栈解决的问题-代码更简洁

2.递归执行机制1,打印问题

方法递归调用内存分析:

3.递归执行机制2,打印问题进一步思考

修改第2小节中的代码,输出结果如何?

  • 只输出n=2,if else是一个整体,进了if方法体内,就不能再进else

4.递归执行机制3,阶乘factorial问题

  • 阶乘factorial实现代码

  • 阶乘factorial内存分析

5.递归执行机制4,递归的重要规则,五点

递归的重要规则,五点:

6.递归斐波那契fibonacci

题目:给出一个整数n,求出第n位的斐波那契数是多少

  • 斐波那契第n位数的值,等于前两位的和
  • main

  • 递归斐波那契fibonacci实现思路及代码

7.猴子吃桃

  • 解决的要点在理清天数,和桃子数的关系,还有就是return

8.老鼠出迷宫1,使用数组创建迷宫地图,输出迷宫地图

  • 使用数组创建迷宫地图

  • 输出迷宫地图

9.老鼠出迷宫2

老鼠出迷宫思路分析:

  • 找到返回true,否则返回false
  • map数组中各个值的不同含义,3 走过,但是走不通是死路
  • 找路策略,下,右,上,左
  • 0 和 2都表示可以走,只需要一次判断即可

10.老鼠出迷宫3,修改找路策略,查看路径是否变化

修改找路策略,查看路径是否变化

  • 上,右,下,左
  • 走2时,判断为走不通(不走走过的路)

11.老鼠出迷宫4,测试回溯现象(这个回溯是在代码那里实现的)

测试回溯现象

  • 思考:如何求出最短路径

12.汉诺塔

  • 如果有多个盘,可以看成两个盘,最下面的盘和他上面的所有盘

13.八皇后

八皇后问题说明:

八皇后问题思路分析:

posted @ 2021-09-06 15:45  CH0701  阅读(122)  评论(0)    收藏  举报