您的当前位置: 源码爱好者 » 网页制作教程(编程教程) » C#技术教程

c# 递归解决汉诺塔问题

  • 标签:递归 汉诺塔  更新时间:2014-05-21
  • HanioTower.cs代码内容:递归解决汉诺塔问题,C#汉诺塔问题实例演示。将n个盘从from柱移到to柱,以aux柱为辅助柱,仅有一个盘时,直接从from柱移到to柱,将3个圆盘从A柱移到C柱,移动时利用B柱为辅助柱:

    using System;
    public class HanoiTower 
    {
    	// 将n个盘从from柱移到to柱,以aux柱为辅助柱
    	public static void move(int n, char from, char to, char aux) 
    	{
    		if (n == 1) 
    		{
    			// 仅有一个盘时,直接从from柱移到to柱
    			Console.WriteLine("将 #1 盘从 {0} 移到 {1}", from, to );
    		} 
    		else 
    		{
    			// 将n - 1个盘从from柱移到aux柱,以to柱为辅助柱
    			move(n - 1, from, aux, to);
    			// 将最下的圆盘从from柱移到to柱
    			Console.WriteLine("将 #{0} 盘从 {1} 移到 {2}", n, from, to );
    			// 将n - 1个盘从aux柱移到to柱,以from柱为辅助柱
    			move(n - 1, aux, to, from);
    		}
    	}
    	public static void Main( ) 
    	{
    		// 将3个圆盘从A柱移到C柱,移动时利用B柱为辅助柱
    		move(3, 'A', 'C', 'B');
    	}
    }
  • 已读: 次 收藏本文关闭本文打印本文复制链接