这个你可以先从简单的开始想,比如说只有两个盘子的时候程序时怎么实现的。我这里用n个说明。可以分三个阶段实现,第一步把n-1盘子从a塔移到b塔(hanoi(n-1,one,three,two);),再把最大的那个从a塔移到c塔(move(one,three);),最后把n-1个盘子从b塔移到c塔( hanoi(n-1,two,one,three);)。这就是完整的递归过程,至于怎样实现移动那n-1个盘子,又是个递归调用的过程,只是把上述的三个阶段中的n改为n-1即可。
补充:函数void hanoi(int n,char one,char two,char three)中one,two,three分别表示后面的a,b,c三座塔。函数hanoi(int n,char one,char two,char three)是表示把n个盘子从a塔(one)移到c塔(three),那么把n-1盘子从a塔移到b塔的实现也是递归调用该函数,语句也就是(hanoi(n-1,one,three,two);)。
你可以看数据结构