这几天用了下树的递归,想起了汉诺塔
void print(char a, char b)
{
cout << a << "-->" << b << endl;
}
void mov(int k, char from, char to, char tmp)
{
if (k == 1)
{
print(from, to);
}
mov(k-1, from, tmp, to);
print(from, to);
mov(k-1, tmp, to, from);
}
很有意思的一个递归,实现了语意到程序的抽象
A B C
可以发现当k=3的时候,结果里有C->A
初看起来觉得有些奇怪,程序里没有明显的to->from啊
分析下发现是合理的,因为传递原理
A B C
A<=>B C
A B <=>C
有A<=>C