ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 汉诺塔程序

汉诺塔程序

原创 Linux操作系统 作者:wuft2003 时间:2009-06-11 00:32:06 0 删除 编辑

/**
**典型递归问题汉诺塔
*一块板上有三根针,A,B,C。A针上套有64个大小不等的圆盘,大的在下,小的在上。
*要把这64个圆盘从A针移动C针上,每次只能移动一个圆盘,移动可以借助B针进行。
*但在任何时候,任何针上的圆盘都必须保持大盘在下,小盘在上。
**/
#include
int 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;
}

 

典型的递归问题,注意所有的步骤跟两个盘子是一样的

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21634752/viewspace-605842/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-12

  • 博文量
    295
  • 访问量
    322660