汉诺塔

汉诺塔问题,解决思想

假设有A,B,C三个柱子,盘子都在A柱子上,要移动到C柱子上

如果盘子数量大于1,把A上的前n-1个盘子从A借助C移到B,

将A柱子上的第n个盘子直接移到C

讲B柱子上的n-1个盘子借助A移到C

如果A上只有一个盘子,直接从A移动到C

 

函数实现

void Function(int n, string a, string b, string c)
{
    if(n==1)
    {
        Console.WriteLine("编号为{0}的盘子,从{1}移动到{2}",n, a, c);
    }    
    else
    {
        Function(n-1, a, c, b);
        Console.WriteLine("编号为{0}的盘子,从{1}移动到{2}",n, a, c);
        Function(n-1, b, a, c);
    }
}    

int main()
{
    string a="A", b="B", c="C";
    int n = 10;
    Function(10, a, b, c);  
}

 

posted on 2015-08-06 12:50  alex_cool  阅读(202)  评论(0编辑  收藏  举报