教程视频参考:https://www.bilibili.com/video/av12642530/#page=20
问题:

代码如下:
//Hanoi问题
//========================================
#include<iostream>
using namespace std;
void move(char X, char Y)
{
cout << "move" << X << "to" << Y << endl;
}
void Hanoi(int n, char X, char Y, char Z)
{
if (n <= 1)
{
move(X, Z);
}
else
{
Hanoi(n - 1, X, Z, Y);
move(X, Z);
Hanoi(n - 1, Y, X, Z);
}
}
void main(void)
{
int n = 5;
char X = 'X';
char Y = 'Y';
char Z = 'Z';
Hanoi(n, X, Y, Z);
while (1);
}
由于一直在做一种重复性操作,所以可以使用递归的方法,分而治之,化成子问题,再递归。