递归--汉诺塔游戏

本文介绍了汉诺塔游戏的规则和解决方案,通过递归算法详细展示了如何将X针上的圆盘移动到Z针上。在游戏分析中,以64个盘子为例进行说明,并提供了C#实现的递归代码。此外,还探讨了递归在解决斐波那契数列、二分查找、遍历文件和树节点等问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.游戏界面如下图,游戏描述,把X针上的圆盘移动到 Z 针上,(圆盘放置的规则:大盘在下,小盘在上)


2.游戏分析,假设X针上有64个盘子


3.游戏代码


  class Program
    {
        //统计移动次数
        public static long count = 0;
        static void Main(string[] args)
        {
            TowerofHanoi(64,"X","Y","Z");
            Console.WriteLine(string.Format("共移动{0}次",count));
            Console.Read();
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="n">待移动的盘子数量</param>
        /// <param name="X">盘子原来所在的针</param>
        /// <param name="Y">借助的中间针</param>
        /// <param name="Z">目标移动的针</param>
        public static void TowerofHanoi(int n, string X, string Y, string Z)
        {
            if (n == 1)
            {
                //如果只有一个盘子。直接移动到目标针即可
                Console.WriteLine(X + " -> " + Z);
                 ++count;
            }
            else {
                TowerofHanoi(n - 1, X, Z, Y);//把X前n-1个盘子,借助Z,从X移动到Y
                Console.WriteLine(X + " -> " + Z);//然后把最后一个盘子从X移动到Z
                TowerofHanoi(n - 1, Y, X, Z);//最后把Y上的n-1个盘子,借助X,从Y移动到Z
            }
        }
    }


4.递归的应用,


利用递归的思想建立递推关系,如由兔子生崽而来的fibonacci数列。

二分查找法

遍历文件夹中的文件

遍历树节点等






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值