/**
**典型递归问题汉诺塔
*一块板上有三根针,A,B,C。A针上套有64个大小不等的圆盘,大的在下,小的在上。
*要把这64个圆盘从A针移动C针上,每次只能移动一个圆盘,移动可以借助B针进行。
*但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。
**/
#includeint main()
{
int num = 4;
int ret = 0;
char A = 'A';
int N = num;
char B = 'B',C = 'C';
ret=move(A, B, C, N );
if( ret < 0 )
{
printf(" Call move error !" );
}
return 0;
}
int move( char a,char b,char c,int num )
{
if( num > 1 )
{
move( a,c,b,num-1 );
printf(" %c -- %c \n", a,c);
move( b,a,c,num-1 );
}else if( 1 == num )
{
printf("%c-->%c\n",a,c);
}else
{
printf(" The Num is error ! \n");
return (-1);
}
return 0;
}
典型的递归问题,注意所有的步骤跟两个盘子是一样的