这几天用了下树的递归,想起了汉诺塔
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
本文通过一个具体的例子——汉诺塔问题,探讨了递归算法的应用及其实现方式。介绍了如何将问题抽象为递归形式,并通过C++代码展示了具体的递归过程。

1590

被折叠的 条评论
为什么被折叠?



