源代码:
#包含
voidmovedisc(unsignedn,char fromneedle,char toneedle,char usingneedle );
int i=0;
int main () )
{
无符号n;
printf (pleaseenterthenumberoflocomotive : );
scanf('%d ',n ); 输入//n值
打印((t needle : (ta ) tb ) tc(n ) );
movedisc(n,' a ',' c ',' b ' );//从a上面借b把n个盘子移动到c上面
/*****************************。
//在这里放入以下代码,将C上的n盘又放回a,删除这里的代码汉诺威问题的源代码
for(intj=1; j=(int ) n; j )
{
I;
printf((t[%d]: ) t-
}
/*****************************。
printf((ttotal: ) t%d(n ),I );
scanf('%d ',n );
返回0;
}
voidmovedisc(unsignedn,char fromneedle,char toneedle,char usingneedle ) )。
{
是if(N0 )
{
从fromneedle使用toneedle将N-1盘移动到usingneedle
movedisc(n-1,fromneedle,usingneedle,toneedle );
I;
将其中一个fromneedle盘子转移到toneedle
sitch (来自) )。
{
案例a ' :
是sitch(toNeedle )
{
案例b ' :
printf((t[%d]:(t--------n ),I,n,n );
布雷克;
案例c ' :
printf((t ) (%d ) : (t---------- n )、I、n、n );
布雷克;
}
布雷克;
案例b ' :
是sitch(toNeedle )
{
案例a ' :
printf((t[%d]: ) t-
布雷克;
案例c ' :
printf((t(%d ) :(t(t--------(n ),I,n,n ) );
布雷克;
}
布雷克;
案例c ' :
是sitch(toNeedle )
{
案例a ' :
printf((t[%d]: ) t-
布雷克;
案例b ' :
printf((t[%d]:(t ) t-)
布雷克;
}
布雷克;
}
从usingneedle使用fromneedle将N-1个盘子移动到toneedle
movedisc(n-1,usingneedle,toneedle,fromneedle );
}
}