汉诺塔原代码,流程图,和分析,谁能提供啊,给100分啊

来源:百度知道 编辑:UC知道 时间:2024/06/15 21:57:45
谢谢,不要只提供原代码啊!!
汇编啊!!!!

源代码:
/*Hanoi*/
long time;
int Move(n,a,b,c) /*A£º¿ªÊ¼ B:ÖÐת C:Ä¿±ê*/
int n;

char a,b,c;
{
if(n==1) {
printf("%c->%c\n",a,c);
time++;
}
else
{Move(n-1,a,c,b);
printf("%c->%c\n",a,c);
time++;
Move(n-1,b,a,c); }
return 0;
}

int main()
{
int i;
printf("Input n:");
scanf("%d",&i);
Move(i,'A','B','C');
printf("Total:%ld",time);
getchar();
getchar();
}
流程图:略

分析:
将n个盘子从A针移动到C针可以分为以下三个步骤:
将n-1个盘子借助C移到B针
将1个盘子从A移到C
将n-1个盘子从B借助A移到C
当n=1的时候,我们直接将盘子移动目标针就可以了.否则,按以上方式操作.