分析:
将n个盘子有a座移动到c座可分为以下三个过程:
① 先将a座上n-1个盘子借助c座移动到b座。
②再将a座最下面一个盘子移动至c座。
③最后将b上n-1个盘子借助a移至c座
上述过程是把移动n个盘子的问题转换成移动n-1个盘子的问题,按这种思路,在将移动n-1个盘子的问题转化成n-2个盘子的问题,直至移动一个盘子。
可以用两个函数描述上述移动过程:
① 从一个底座上移动n个盘子到另一个底座
②从一个底座上移动一个盘子到另一个底座
两个函数的代码如下:
void Move(char chSour,char chDest)
{ printf("%c------>%c",chSour,chDest);
}
void Hanoi(int n,char A,char B,char C)
{if(n==1) Move(A,C);
else{Hanoi(n-1,A,C,B);
Move(A,C);
Hanoi(n-1,B,A.C);
}
}