汉诺塔问题:
这是一道著名的算法题,也是递归思想的典型体现。
可以总结,当圆盘数为n时,将最下层圆盘和其余上部份所有圆盘看作两个整体,则满足以下步骤:
1、把n-1个圆盘从A经过C移动到B
2、把第n个圆盘从A移动到C
3、把n-1个圆盘从B经过A移动到C
经过总结,步骤1和3化为了该问题问题规模的n-1范围,构成递归条件。
递归结束的条件即为n=0时,表明没有盘子可以移动。
void HanNuo(int n, char a,char b,char c)
{
//将上方的n-1个圆盘从a经过c移动到b
if(n > 0) HanNuo(n-1,a,c,b);
std::cout << "从 " << a << " 移动到 " << c;
//将上方的n-1个圆盘从b经过a移动到c
HanNou(n-1,b,a,c);
}