汉诺塔游戏的3个步骤(见项目二)可以分为两类操作。
(1)将n−1个圆盘从一个柱子移动到另一个柱子(n>1)。
(2)将1个圆盘从一个柱子移动到另一个柱子。
分别用两个函数实现以上两类操作:定义hanoi()函数实现第(1)类操作,定义move()函数实现第(2)类操作。hanoi(n,a,b,c)函数表示将n个圆盘借助b柱从a柱移动到c柱的过程,调用move(n,a,c)函数表示将第n个圆盘从a柱移动到c柱的过程。由于每次调用时,不需要使用上次的计算结果,故所有变量均可设为自动变量类型。
请问流程图和控制流图怎么画??
```c
#include <stdio.h>
void hanoi(int n,char a,char b,char c) /*定义hanoi()函数*/
{
void move(int n,char a,char b); /*声明move()函数*/
if(n==1) /*判断n是否为1,若是,调用move()函数*/
{
move(n,a,c);
}
else /*否则递归调用hanoi()函数,并调用move()函数*/
{
hanoi(n-1,a,c,b);
move(n,a,c);
hanoi(n-1,b,a,c);
}
}
void move(int n,char a,char b)/*定义move()函数,输出移动步骤*/
{
printf(" Move sheet %d from %c to %c\n",n,a,b);
}
int main() /*定义主函数*/
{
int n;
printf("请输入移动圆盘的数量:");
scanf("%d",&n);
hanoi(n,'A','B','C'); /*调用hanoi()函数*/
return 0;
}
```