文档介绍:,实现汉诺塔问题的圆盘的移动。,假设有三个分别命名为A,B和C,在塔座A上插有n个直径大小各不同的圆盘。要求将A轴上的n个圆盘移至塔座C上并任按同样顺序叠排,圆盘移动时必须遵循以下规则:;,Y和Z中的任意塔座上;。最后输出移动的步骤以及移动的起始位置。,为整型,可将待测试数据设置为2、3、4、5、6。,用户可以自己确定盘的数量(1~~n)。在用户确定数量之后,程序开始自动运行(移动圆盘),并依次打印出移动的步数与路线,运行结束。,设定圆盘的数量,输出跟踪的步数也应为一个整型数据。。,且不要过大,否则运算量会很大并且没有多大的实际意义。: 主程序流程图:开始输入圆盘数i判断i i=1递归移动圆盘 i>1结束程序图1-1主程序流程模块调用关系图:主程序输入模块实现模块结果输出模块图1- AlgorithmTower(valm<numberofdisk>valA,B,C<metadata>refi<metadata>)n=m //输入一个整型数字以设定圆盘的数量if(i=1) (A,C) //BaseCase的处理 3. else //递归调用的方法处理GeneralCase (n-1,A,C,B) (A,C) (n-1,B,A,C) ,命名为move_disk(),其中设置两个形参charsrc和chardst分别表示两个塔盘A和C。这个函数中,只做src===èdst操作,同时使i的值增加1,即用语句i=i++。voidtowers(intn,charsrc,charmid,chardst){//在该成员函数中,n,src,mid,dst分别表示圆盘的个数与三个塔盘If(n==1) {调用move_disk函数}Elsetowers(n-1,src,dst,mid);//以dst(C塔)为辅助,将1到n-1号圆盘全部移动到mid(B塔)上move_disk(src,dst);//直接将A塔上的圆盘移动到C盘上towers(n-1,mid,src,dst);//将B塔上的1至n-1号盘移动至C塔上},设定一个整型变量disk以用来向成员函数中传递参数做为圆盘的数量,然后直接调用以上函数。再用while(n=='y'||n=='Y'){直接调用以上函数}设定一个是否需要重复运行的功能。最后程序结束,设置结束界面。、体会 (1).关于Basecase的调用问题在开始时,根据程序的概要