void Hanoi (int n, char x, char y, char z)
{
if (n = = 1)
move(x, 1, z);
else {
Hanoi (n-1, x, z, y);
move (x, n, z);
Hanoi (n-1, y, x, z);
}
}
其实2阶汉诺塔相当于执行了三大步骤:
1.在ACB的顺序下执行了一阶汉诺塔的移法
2.从A->C移动了最大盘
3.在BAC的顺序下执行了一阶汉诺塔的移法
那么推广到三阶的时候,我们将小环和中环视为一个整体,我们是否又变成了执行二阶汉诺塔方法了呢?
那么四阶前三个环视为整体,五阶前四个环视为整体……
所以就可得出递归解法。