HANOI塔问题的递归解,第1张

HANOI塔问题的递归解,第2张

汉诺塔问题是数据结构中用来介绍递归算法的最典型的例子。

这个程序可以同时在屏幕上显示汉诺塔问题求解步骤的中间结果,并保存在文本文件中。(当许多显示结果不能在一个屏幕上显示时,后一点特别有用)

程序的想法很简单。看评论就明白了。

/*
Name: hanoi2.c
作者:朱庆
描述:汉诺塔问题的递归求解
日期:06-08-03 11: 44
版权:[/br/Include
#定义N ^ 5
/*原始列、中间列和目标列的初始值数组*/
char a [] = {'1 ',' 2 ',' 3 ',' 4 ',' 5 ' };
char b[]={'0 ',' 0 ',' 0 ',' 0 ' };
char c[]={'0 ',' 0 ',' 0 ',' 0 ' };
int step = 0;
main()
{
FILE * FP;
int I;
if((FP = fopen(" c:\ \ Hanoi 2 . txt "," w "))= = NULL){
printf(" \ n无法打开文件!\ n ");
getch();
退出(0);
}
printf(" \ n = = = = = = = = = = = = =河内塔= = = = = = = = = = = = \ n ");
print(N);
fprint(N,FP);
move(N,a,b,c,FP);
f close(FP);
getch();
}
/*递归函数*/
void move (int n,char a [],char b [],char c [],file * FP)
{
if (n > 0) {[

c[n-1]= a[n-1];
a[n-1]= ' 0 ';
print(N);
fprint(N,FP);

  move(n-1,b,a,c,fp);
  }
  }
  /* 打印输出结果到屏幕的函数 */
  void print(n)
  int n;
  {
  int i;
  printf("\nSTEP%d",step++);
  printf("\na:");
  for(i=0;i

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » HANOI塔问题的递归解

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情