数值算法

来源:互联网 发布:淘宝网旗舰店是正品吗 编辑:程序博客网 时间:2024/06/01 15:27


7、数值算法。用递归法计算解决汉诺塔问题,并能够演示解决汉诺塔问题过程中圆盘搬移过程。




/*汉诺塔的算法就3个步骤:
第一,把a上的n-1个盘通过c移动到b。
第二,把a上的最下面的盘移到c。
第三,因为n-1个盘全在b上了,所以把b当做a重复以上步骤就好了。
所以算法看起来就简单多了。不过,思考过程还是很痛苦的,难以理解。*/
#include<stdio.h>
//首先定义一个move()函数。
void move(int n, char a, char b, char c)
{
 if(n==1)
  printf("      %c->%c\n",a,c);
 else
 {
  move(n-1,a,c,b);
  printf("      %c->%c\n",a,c);
 move(n-1,b,a,c);
    }
}
main()
{
 int n;
 while(1)
 {
printf("******************************\n");
 printf("    输入有几个盘子C:\n");
 scanf("%d",&n);
 printf("移动的步骤:\n");
 move(n,'A','B','C');
printf("******************************\n\n\n");
 }
}

0 0