关于汉诺干塔问题的一些疑问
之前看过汉诺塔的一个思路是这样的。先把n-1个从f通过t到b,然后把第n个从f到t;最后把n-1个从b通过f到t。写成代码为
int hanoi(int n,char f,char b,char t){
hanoi(n-1,f,t,b);
printf("%c => %c\n",f,t);
hanoi(n-1,b,f,t);
}
我很纠结的是他为什么可以有这样的思路?
这样的思路怎么写成这样的代码呢?
我这样想为什么就不可以了?
我先把n-1个从f通过t移到b,然后把第n个从f移到t;再同样的道理先把n-1个从b通过t移到f,再把第n个从b移到t;(这里我不懂的是他为什么可以把剩下的一次移过去)以此递推
写成代码为
int hanoi(int n,char f,char b,char t){
hanoi(n-1,f,t,b);
printf("%c => %c\n",f,t);
hanoi(n-1,b,t,f);
printf("%c => %c\n",b,t);
}
这里运行结果错误,是不是柱子也应该跟着动呢?