汉诺塔问题
递归实现
#include <iostream>
using namespace std;
void HanoiMove(int n, char a, char b, char c);
int main()
{
int n;
cin >> n;
HanoiMove(n, 'a', 'b', 'c');
}
void HanoiMove(int n, char a, char b, char c)
{
if (n == 1)
{
printf("%c -> %c\n", a, c);
return;
}
else
{
HanoiMove(n - 1, a, c, b);
printf("%c -> %c\n", a, c);
HanoiMove(n - 1, b, a, c);
}
}
下面是堆栈的实现过程。
过程如图所示,注意入栈的顺序和递归的顺序是相反的
#include <iostream>
#include<stack>
using namespace std;
class node
{
pu