求助关于递归的问题
本帖最后由 C语言鱼c 于 2013-11-17 18:26 编辑代码在下面
#include <stdio.h>
void main()
{
void hanoi (int n, char one, char two, char three);
/*对hanoi函数的声明*/
int m;
printf ("input the number of diskes : ");
scanf ("%d", &m);
printf ("The step to moveing %d diskes:\n", m);
hanoi (m, 'A', 'B', 'C');
}
void hanoi (int n, char A, char B, char C)
/*定义hanoi函数,将n个盘从A座借助B座,移到C座*/
{
void move (char x, char y); /*对move函数的声明*/
if (n == 1)
{
move (A ,C);
}
else
{
hanoi (n - 1, A, C, B);
move (A, C);
hanoi (n - 1, B, A, C);
}
}
void move (char x, char y) /*定义move函数*/
{
printf ("%c --> %c\n", x, y);
}
这个是课本上的汉诺塔的代码吧
就是介绍递归的! 这个主要讲的分而治之法,就是讲把N个盘子看成是3个盘子按照一定规则,从A移到B ☆﹎尐の潴猪 发表于 2013-11-17 18:35 static/image/common/back.gif
这个主要讲的分而治之法,就是讲把N个盘子看成是3个盘子按照一定规则,从A移到B
楼主吧程序中的N当成是2 模拟一遍程序的具体的实现,可以看到程序里面的A, B, C的变换 好无聊的叠盘子游戏:mad:
页:
[1]