哪位大哥好心给我个汉诺塔流程图
把这个c程序流程图写一下就好了
#include <stdio.h>
void hanoi(int n, char A, char B, char C)
{
if(n == 1)
{
printf("Move sheet %d from %c to %c\n", n, A, C);
}
else
{
hanoi(n-1, A, C, B);
printf("Move sheet %d from %c to %c\n", n, A, C);
hanoi(n-1, B, A, C);
}
}
int main()
{
int n;
printf("请输入盘数:");
scanf("%d", &n);
hanoi(n, 'A', 'B', 'C');
int x;
scanf("%d",&x);
return 0;
}
很简单,实际就是一个递归调用,不断调用hanoi,实质就是把n-1个圆盘从A移至B,将第n个圆盘从A移至C,再将n-1个圆盘从B移动到C,当n不等于1时,就不断迭代这个循环,直到n=1:
希望你能明白:
#include<stdio.h>
void move(char x,char y)
{
printf("%c-->%c\n",x,y);
}
void hanoi(int n,char one ,char two,char three)
{
if(n==1) move(one,three);
else
{
hanoi(n-1,one,three,two);
move(one,three);
hanoi(n-1,two,one,three);
}
}
main()
{
int m;
printf("input the number of disks:");
scanf("%d",&m);
printf("the step to moving %3d diskes:\n",m);
hanoi(m,'A','B','C');
}