emmm,大概是一年半以前的了,小学期重新学习,我也系统地搞一遍叭,将近一年没动的博客~~~
DFS是和递归紧紧结合的。
递归:某一个方法的自我调用。
用到递归的情形:
1.定义是递归的(阶乘)
2.数据结构是递归的(链表、树)
3.问题的解法是递归的(汉诺塔)
1、汉诺塔问题:这个博客写的挺好的
https://www.cnblogs.com/dmego/p/5965835.html
https://blog.csdn.net/weixin_42202257/article/details/90313036
思路:
实现这个算法可以简单分为三个步骤:
(1) 把n-1个盘子由A 移到 B;
(2) 把第n个盘子由 A移到 C;
(3) 把n-1个盘子由B 移到 C;
从这里入手,在加上上面数学问题解法的分析,我们不难发现,移到的步数必定为奇数步:
(1)中间的一步是把最大的一个盘子由A移到C上去;
(2)中间一步之上可以看成把A上n-1个盘子通过借助辅助塔(C塔)移到了B上,
(3)中间一步之下可以看成把B上n-1个盘子通过借助辅助塔(A塔)移到了C上;
2、