汉诺塔
汉诺塔介绍
- 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
递归
- 函数直接或者间接地调用自己。是编程中常用的思想,简化代码编写,加重CPU负担的一个典型的以资源换方便的方法
思路以及实现
思路
- 先考虑一个盘子的情况,直接A–>C
- 再考虑两个盘子的情况,A–>B,A–>C,B–>C
- 然后考虑三个盘子的情况,把最底下一个盘子当成不存在,那么问题又变为两个盘子的情况,具体做法是将上面两个盘子全部移动到B,再把最大的盘子移到C,然后把B当成两个盘子情况下的A,再重复两个盘子的方法,解决
- 最后想下四个盘子的情况,同样把最底下的盘子当成不存在,我们要把上面3个盘子移动到B,那么就是三个盘子的情况,三个小的移动到B之后,把最大的从A–>C,然后再把B当成A继续重复第三种情况的做法,递归解决
代码实现
# @Intro: 汉诺塔
# A,B,C三个支架子,A上放了从下往上从大到小的盘子
# 现在要求把A上的盘子移动到C上,B可以作为中间暂时放置的媒介
# 但是在移动的过程中必须遵守小盘子必须在大盘子上面,