汉诺塔问题
程序员文章站
2022-07-15 18:28:44
...
#include<iostream>
using namespace std;
void move(int n, char moveFrom, char buffer, char moveTo)
{
if (n == 1)
{
cout << moveFrom << " -> " << moveTo << endl;
return;
}
move(n -1, moveFrom, moveTo, buffer); //A -> B 通过C
move(1, moveFrom, buffer, moveTo); // A -> C 通过B
move(n -1, buffer, moveFrom ,moveTo); // B -> C 通过A
}
int main()
{
move(3, 'A', 'B', 'C');
return 0;
}
汉诺塔实际上是线性递归模式,减而治之的思想;
汉诺塔中的三根柱子具有等价性,操作具有对称性;
推荐阅读