汉诺塔问题
问题概述与规则
假设有三根柱子要求,将A柱子上的所有盘子移动到B柱子上;
n个盘子标记为1, 2, 3, .... n ;
三个柱子标记为 A、B、C ;
初始状态所有的盘子都在A柱子上 ;
*移动磁盘条件
1. 一次只能移动一个磁盘
2. 不能在较小的磁盘上放置较大的磁盘
*理论主题
1. 递归函数和堆栈
2. 递归关系
图示
问题拆解(n为盘子个数)
*n = 1: 直接将盘子从A(起始柱子) 移到B(目标柱子)
*n > 1: 将问题从宏观考虑
1. 借助柱子B将n-1个盘子从A柱子移动到C柱子
2. 此时A柱子上只有一个盘子直接移动到B(目标柱子)
3. 借助柱子A将n-1个盘子从C柱子移动到B柱子
Java代码实现

疑惑点:
-
一定要确定好哪个是起始柱子哪个是目标柱子;
-
Java中的值传递

参考:
学而不思则罔,思而不学则殆!

浙公网安备 33010602011771号