c语言汉诺塔问题

这两天玩了玩汉诺塔的游戏,对汉诺塔有了解了一点。大概就是,要先把最大的那一个移到C柱子上,就要把A柱子最大的上面那些圆盘的借助C柱子移到B柱子上,在把A上最大的移到C上,最后把B上的圆盘借助A移到C。




/*汉诺塔*/

#include

void move(int x,char A,char B);

int HanoTower(int x,char A,char B,char C);

int main(){

int x;

char A='A',B='B',C='C';//三个字母代表A,B,C三个塔

printf("这是一个汉诺塔的移动次序问题\n");

printf("请输入汉诺塔的层数:\n");

scanf("%d",&x);

HanoTower(x,A,B,C);

}

int HanoTower(int x,char A,char B,char C){

if(x!=1){

HanoTower(x-1,A,C,B);

move(x,A,C);

HanoTower(x-1,B,A,C);

}

else move(x,A,C);

return 0;

}

void move(int x,char A,char B){

static int count=0;

count++;

printf("第%-2d次移动,%d从%c->%c\n",count,x,A,B);

}

你可能感兴趣的:(c语言汉诺塔问题)