关于汉诺塔的递归算法,到底是怎么执行的?想的头痛
关于汉诺塔的递归算法,到底是怎么执行的?想的头痛当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 编辑 ]