晶.
2022-06-24 10:04
采纳率: 96.3%
浏览 35

汉诺塔游戏的流程图和控制流图怎么画

汉诺塔游戏的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;
}


```

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

相关推荐 更多相似问题