谁给个C语言汉诺塔递归算法及其详细注释

来源:百度知道 编辑:UC知道 时间:2024/05/13 07:55:58
main()
{
int n;
void hanoi(int n,char a,char b,char c);
printf(";lease enter the number of disks to be moved:");
scanf("%d",&n);
hanoi(n,'a','b','c');
}
void hanoi(int n,char a,char b,char c)
{
if(n>0)
{hanoi(n-1,a,c,b);
printf("\n move disc %d from pile %c to %c",n,a,b);
hanoi(n-1,c,b,a)};
}

程序怎么执行啊?

源代码:
#include<stdio.h>

void movedisc(unsigned n,char fromneedle,char toneedle,char usingneedle);
int i=0;
int main()
{
unsigned n;
printf("please enter the number of locomotive:");
scanf("%d",&n); //输入N值
printf("\tneedle:\t a\t b\t c\n");
movedisc(n,'a','c','b'); //从A上借助B将N个盘子移动到C上
//*********************************************************************
//在此处加入如下代码将C上的N个盘子再移回A 去掉此处代码即汉诺塔问题源代码
for(int j=1;j<=(int)n;j++)
{
i++;
printf("\t[%d]:\t%2d<-------------%2d\n",i,j,j);
}
//*********************************************************************
printf("\tTotal:\t%d\n",i);
scanf("%d",&n);
return 0;
}
void movedisc(unsigned n,char fromneedle,char toneedle,char usingneedle)
{
if(n>0)
{