0001 // 按照Hanoi规则,将柱子Sx上的n只盘子,借助柱子Sy中转,移到柱子Sz上 0002 void hanoi ( int n, Stack<Disk>& Sx, Stack<Disk>& Sy, Stack<Disk>& Sz ) { 0003 if ( n > 0 ) { //没有盘子剩余时,不再递归 0004 hanoi ( n - 1, Sx, Sz, Sy ); //递归:将Sx上的n - 1只盘子,借助Sz中转,移到Sy上 0005 move ( Sx, Sz ); //直接:将Sx上最后一只盘子,移到Sz上 0006 hanoi ( n - 1, Sy, Sx, Sz ); //递归:将Sy上的n - 1只盘子,借助Sx中转,移到Sz上 0007 } 0008 }