如果我可以选择使用递归或memoization来解决我应该使用的问题?换句话说,如果它们都是可行的解决方案,因为它们提供了正确的输出,并且可以在我正在使用的代码中合理地表达,何时我会使用另一个?
我喜欢这个问题中提到的算法:"这是如何工作的?奇怪的河内解决方案塔" 这是如何工作的?河内解决方案奇怪的塔
有没有什么办法可以扩展河内塔楼的非递归解决方案来使用X盘和Y塔,塔楼代表堆栈?
可能重复:
这是如何工作的?河内解决方案奇怪的塔
在浏览谷歌的过程中,我发现这个有趣的解决方案是Tower Of Hanoi,它甚至不使用堆栈作为数据结构.
任何人都能简单地解释一下,它到底在做什么?
这个解决方案真的可以接受
码
#include <stdio.h>
#include <stdlib.h>
int main()
{
   int n, x;
   printf("How many disks?\n");
   scanf("%d", &n);
   printf("\n");
   for (x=1; x < (1 << n); x++)
      printf("move from tower %i to tower %i.\n",
         (x&x-1)%3, ((x|x-1)+1)%3);
return 0;
}
更新:3号硬编码在这里做什么?