关于汉诺塔的递归算法,到底是怎么执行的?想的头痛
关于汉诺塔的递归算法,到底是怎么执行的?想的头痛当n等于2时可以理解,当n等于3是就理解不了了。现在就是想知道当n等于3时,程序到底是怎么执行的?为什么第一个输出的是a->c;
程序代码:# include "stdio.h"
void move(int n, char a, char b, char c)
{
if (n == 1)
printf("\t%c->%c\n", a, c);
else
{
move(n-1, a, c, b);
printf("\t%c->%c\n", a, c);
move(n-1, b, a, c);
}
}
int main(void)
{
int n;
printf("请输入要移动的块数:");
scanf("%d", &n);
move(n, 'a', 'b', 'c');
return 0;
}
/*执行结果:
a->c
a->b
c->b
a->c
b->a
b->c
a->c*/[ 本帖最后由 whukeming 于 2013-3-30 17:08 编辑 ]









