如何使用迭代实现汉洛塔问题的解答(用c语言写出程序)
帮忙帮忙,万分感谢 问题点数:20、回复次数:8Top
1 楼DaNiao(鸿雁)回复于 2002-09-09 22:27:46 得分 0
那个塔是不能迭代的Top
2 楼clingsii()回复于 2002-09-09 22:42:45 得分 0
同意,应该用递归Top
3 楼clingsii()回复于 2002-09-09 22:43:25 得分 0
许多数据结构书上都有Top
4 楼zhf0021(屡战屡败,屡败屡战)回复于 2002-09-10 12:35:17 得分 0
一般的c语言得书上也有。
对,好像是递归, 而不是迭代,迭代一般用在计算机解方程上。Top
5 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2002-09-10 15:49:47 得分 10
move(char a,char b)
{
printf("%c-->%c",a,b);
};
hanoi(char a,char b,char c,int n)
{
if(n==1)
{
move(a,c);
}
else
{
hanoi(n-1,a,c,b);
move(a,c);
hanoi(n-1,b,a,c);
};
};
main()
{
int n;
scanf("%d",n);
printf("\n");
hanoi('A','B','C',n);
}
这个就是hanoi的算法了
Top
6 楼ghost_lsw(1%≈1)回复于 2002-09-10 20:10:24 得分 10
/*用递归的方法*/
void towers(int n,char frompge,char topeg,char auxpeg)
{
char * format1 ="\n%s%c%s%c",
* movedisk1="move disk 1 from peg",
* formatn ="\n%s%d%s%c%s%c",
* movedisk ="move disk",
*from ="from peg",
*to ="to peg";
if (n==1)
{
printf(format1,movedisk1,frompeg,to,topeg);
return;
}/*出口*/
/*把n-1个peg从frompeg借助topeg移到auxpeg*/
towers(n-1,frmpeg,auxpeg,topeg);
/*把圆盘n由frompeg 直接称到topeg*/
tf(formatn,movedisk,n,form,frompeg,to,topeg);
/*把n-1个圆盘从auxpeg借助frompeg移到topeg*/
towers(n-1,auxpeg,topeg,frompeg);
}
main()
{
int n;
scan(%d",&n);
towers(n,'X','Z','Y');
}Top
7 楼zhujiaqi(胖子)回复于 2002-09-10 22:49:09 得分 0
回去看数据结构,清华的,红皮的,里面有很详细的说明和例程Top
8 楼xueyedongyu(是答案)回复于 2002-09-10 23:05:36 得分 0
很感谢各位的帮忙,在提出问题前,我已知道如何用递归实现,只是书上要求用迭代去实现这个问题的解答.所以还请各位牛人帮一把,万分感谢.Top




