基本思想:(如图所示)
代码如下
#include<stdio.h> void move(int n,char A,char C) {
printf("%c->%c\n",A,C); } void hanoi(int n,char A,char B,char C)//将n个盘子由初始塔移动到目标塔(利用借用塔) {
if (n==1) move(1,A,C);//只有一个盘子是直接将初塔上的盘子移动到目的地 else {
hanoi(n-1,A,C,B);//先将初始塔的前n-1个盘子借助目的塔移动到借用塔上 move(n,A,C); //将剩下的一个盘子移动到目的塔上 hanoi(n-1,B,A,C);//最后将借用塔上的n-1个盘子移动到目的塔上 } } int main() {
hanoi(2,'A','B','C');//将n个盘子由初始塔移动到目标塔(利用借用塔) return 0; }
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233266.html原文链接:https://javaforall.net