汉诺塔非递归算法C语言实现 #include<stdio.h> #include<stdlib.h> #define CSZL 10 #define FPZL 10 typedef struct hanoi { int n; char x,y,z; }hanoi; typedef struct Stack { hanoi*base,*top; int stacksize; }Stack; int InitStack(Stack *S)...
注意:这样得到的最后的答案不一定是摞在 c 上,如果 N 是奇数将摞在 b 上,所以如果 N 是奇数我们就令第二个柱子为 c ,第三个柱子为 b ,这样就一定最后是摞在 c 上的。 非递归代码: #define_CRT_SECURE_NO_WARNINGS//C++ 中使用 scanf 和 printf 会报错#include<iostream>#include<stack>usingnamespace...
如果不止一个盘子,那么我们需要分成两个步骤: - 先将剩下的n-1个盘子从起始柱子移动到中转柱子上,这时候我们就可以使用递归的方法,调用hanoi函数来实现这一步。 - 然后,再将第n个盘子从起始柱子移动到结束柱子上。 - 最后,将中转柱子上的n-1个盘子移动到结束柱子上,这一步同样可以使用递归的方法来实现。 完...