汉罗塔
setfillstyle(SOLID_FILL,BLACK);/*把原来的地方移去涂黑*/ setcolor(YELLOW);
outtextxy(20+cx,30+cy,num1);/*输出移动过程,每次移动后纵坐标加30*/ outtextxy(62+cx,30+cy,"-->"); outtextxy(130+cx,30+cy,num2); cy+=30;
if(cy>210) /*横坐标换行后另起一列*/ { cx+=145;
cy=0;/*纵坐标重新回到顶部开始显示下一列的演示步骤 */ }
settextstyle(0,0,2);
setfillstyle(SOLID_FILL,BLACK);/*把原来的地方移去涂黑*/
bar(100+150*(x-97)-(33-3*num[x-97].data[num[x-97].top]),400-20*num [x-97].top-8,100+150*(x-97)+(33-3*
num[x-97].data[num[x-97].top]),400-20*num[x-97].top+8);num[y-97].top++;/*入栈,目标点的top加1*/
num[y-97].data[num[y-97].top]=num[x-97].data[num[x-97].top];/*在目标点盘子的代号与源点盘子的代号相同*/
num[x-97].top--;/*出栈,原来地方的top减1*/
setfillstyle(SOLID_FILL,num[y-97].data[num[y-97].top]+1);/*盘子颜色代码是栈顶盘子代号加1*/
bar(100+150*(y-97)-(33-3*num[y-97].data[num[y-97].top]),400-20* num[y-97].top-8,100+150*(y-97)+(33-3*num[y-97].data[num[y-97].top]), 400-20*num[y-97].top+8);
getch( );/*自己按键盘来进行手动控制*/
3.3 递归函数
3.3.1 流程图
根据概要设计中的实现递归函数过程的流程图设计如图3.3所示: