注册 登录
编程论坛 C++教室

【求助】递归~HANOI塔~求讲解~

wangxinkai 发布于 2008-03-17 23:39, 983 次点击
#include <iostream>
using namespace std;
int c;
void print(char x, int n, char y)
{
    cout<<"第"<<n<<"个盘子"<<"从"<<x<<"移动到"<< y<< endl;
}

void move(int n, char A, char B, char C)
{
    if (n == 1)
        print(A, 1, C);
    else
   {
        move(n - 1, A, C, B);
        print(A, n, C);
        move(n - 1, B, A, C);
    }

}

void main()
{
    int n;
    cout << "几个盘子: " ;
    cin >> n;
    move(n, 'A', 'B', 'C');
}
5 回复
#2
wangxinkai2008-03-17 23:40
求递归详解。。。。。。

按步骤拆解一下。。谢谢。。。。。。
#3
wangxinkai2008-03-18 03:19
没有人能回答么????
#4
kaithwin2008-03-18 10:35
自己拿张纸画一下不久知道了
#5
kaithwin2008-03-18 11:37
/*我们可以这样考虑,当n=1时,我们只要直接将A柱的盘子移到C柱,
*当n>1时,我们可以先把n-1个盘子由A柱通过C柱移到B柱,
*此时就可以把A柱剩下的最后一个盘子直接移到C柱,
*这样接下来只要把n-1个盘子通过A柱移到C柱即可,
*如果就构成了递归的思路,
*我们可以定义个移动过程mov(n,a,b,c)表示将n个盘子从a通过b移到c*/
#6
wangxinkai2008-03-19 11:23
俩字,蒙
1