汉诺塔解法C语言实现
2016-03-11 22:45
316 查看
/*汉诺塔的玩法: * 游戏的规则:将A柱上的盘子移动到C柱上,大盘必须在小盘之上。 * 1 当A柱上只有一个盘子的时候,直接移动到C柱上; * 2 当A柱上有两个盘子的时候, * 将A柱上的1盘(从上到下编号)移动到B柱, * 将A柱上的2盘移动到C柱, * 将B柱上的1盘移动到C柱; * (将A上的1~n-1盘---->B柱,将A柱上n---->C柱,B柱上的1~n-1盘---->C柱) * 3 当A柱上有三个盘子的时候,将A柱上的1~2盘移动到B柱, * 将A柱上的3盘移动到C柱, * 将B柱上的1~2盘移动到C柱 * (将A上的1~n-1盘---->B柱,将A柱上n---->C柱,B柱上的1~n-1盘---->C柱) * n 当A柱上有n个盘子的时候,将A柱上的1~n-1盘移动到B柱, * 将A柱上的n盘移动到C柱, * 将B柱上的1~n-1盘移动到C柱。 * (将A上的1~n-1盘---->B柱,将A柱上n---->C柱,B柱上的1~n-1盘---->C柱) * */ #include<stdio.h> void Hanoi(int count,char a,char b,char c){ if(count == 1){ printf("FROM %c TO %c\n",a,c); }else { Hanoi(count-1,a,c,b); printf("FROM %c TO %c\n",a,c); Hanoi(count-1,b,a,c); } } int main(){ printf("please input the number of Hanoi:"); int n; scanf("%d",&n); Hanoi(n,'A','B','C'); return 0; }