zoukankan      html  css  js  c++  java
  • C#递归解决汉诺塔问题(Hanoi)

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace MyExample_Hanoi_
    {
        class Program
        {
            static void Main(string[] args)
            {
                HanoiCalculator c = new HanoiCalculator();
                Console.WriteLine(c.CalculateHanoi(64));//括号内可更改盘数
            }
        }

        class HanoiCalculator
        {
            public ulong CalculateHanoi(int count)//count:盘子数
            {
                ulong stepForOnlyCurrentDish = 1;//搬动一个盘子只需要1步
                if (count == 1)
                {
                    return stepForOnlyCurrentDish;//汉诺塔至少要一个盘子
                }
                ulong totalSteps = stepForOnlyCurrentDish + CalculateHanoi(count - 1)*2;//stepForOnlyCurrentDish搬动“最后一个”大盘子“只要一步+这个大盘子之上的那些盘子要构成汉诺塔所需步数(使用递归)+再把那些盘子搬回来
                return totalSteps;
            }
        }
    }

    //这个例子是猛哥(刘铁猛)(也算是我的正式老师)讲的,注释部分我根据自己的理解加了一些,和网友们一起交流,共同进步!;

  • 相关阅读:
    51 数据中重复的数字
    64 数据流中的中位数
    79. Word Search
    93. Restore IP Addresses
    547. Friend Circles
    Epplus Excel 导入 MSSQL 数据库
    用来更新服务的bat 脚本
    ASP.Net MVC 引用动态 js 脚本
    8、结构的构造器应该显式调用!!!(坑)
    Task 线程重用导致等待!
  • 原文地址:https://www.cnblogs.com/GeekDragon/p/5800394.html
Copyright © 2011-2022 走看看