C程序设计问题 急急急急急急急急急急急急急急急!!!!!!!!!!!!!!!!!!!!

2025-05-22 02:39:22
推荐回答(2个)
回答1:

  #include 

  void move (int h,char c,char f)//h为盘的编号,从c轴移到f轴

  {

  printf("The num of %d disk is moved: %c-->%c/n",h,c,f);

  }

  void hanoi (int n,char x,char y,char z)//n为盘的编号,x为这n个盘所在的轴,y为中间轴,z为目的轴

  {

  if (n == 1)

  move (1,x,z);

  else

  {

  hanoi(n-1, x, z, y);//先把x轴上编号为n的上面的n个盘从x(所在轴)移到y(目的轴),z为中间轴

  move (n,x,z);//将编号为n的盘从x移到n

  hanoi (n-1, y, x, z);//这时这n-1个盘在y轴上,将这n-1个盘从y轴(所在轴)移到z轴(目的轴),x为中间轴

  • }

  }//整个是个递归调用,将n个盘的转移转化为n-1个盘的转移,在转为n-2个盘的转移…………1个盘的转移

  void main()

  {

  int num;

  printf("The number of disks:/n");

  scanf("%d",&num);

  hanoi(num,'A','B','C');

  }

和你那个一样的。。。你看懂了C语言实现的思路就好。。

回答2:

去看看汉诺塔原理吧