如何制作一个用C语言编程的河内游戏?
#include\x0d\ void move(char x,char y)\ x0d \ { \ x0d \ printf(" % c-& gt;%c\n ",x,y);\x0d\ }\x0d\ void hanoi(int n,char one,char two,char three)\ x0d \ { \ x0d \ if(n = = 1)move(one,three);\ x0d \ else \ x0d \ { \ x0d \ Hanoi(n-1,一,三,二);\x0d\ move(一,三);\x0d\ hanoi(n-1,二,一,三);\ x0d \ } \ x0d \ } \ x0d \ main()\ x0d \ { \ x0d \ int m;\x0d\ printf("输入磁盘数量:");\x0d\ scanf("%d ",& ampm);\x0d\ printf("移动%3d磁盘的步骤:\n ",m);\x0d\ hanoi(m,' A ',' B ',' C ');\x0d\ }\x0d\算法介绍:\x0d\其实算法很简单。当板数为n时,移动次数应等于2 n _ 1(有兴趣可以自己证明)。后来,一位美国学者发现了一种出乎意料的简单方法,只需要依次两步。首先将三列按顺序排列成成品字体,将所有圆盘按降序放在A列上,根据圆盘数量确定列排列顺序:若n为偶数,A B C;顺时针放置;\x0d\如果n是奇数,顺时针依次放A C B。\x0d\ (1)将圆盘1从当前列顺时针移动到下一列,即当n为偶数时,若圆盘1在A列,则移动到B列;如果磁盘1在B列,则将其移动到C;如果光盘1在C列,则将其移动到A..\x0d\ (2)接下来,将另外两列上的可移动磁盘移动到新列。即,将非空列上的光盘移动到空列,当两列都不为空时,移动较小的光盘。此步骤不指定要移动哪个磁盘。你可能觉得有很多可能,其实不是,唯一能实施的行动就是。\x0d\ (3)重复(1)(2)的操作,最终按照规定完成汉诺塔的移动。\x0d\所以结果很简单,就是按照移动规则把金块往一个方向移动:\x0d\比如汉诺塔三阶塔的移动:A → C,A → B,B → A,B → C,A → C \汉诺塔问题也是编程中经典的递归问题。