用C#写汉诺塔问题

用C#写汉诺塔问题_第1张图片

假设要将n个圆盘从A->C,中间可以借助B,那么递归思路是这样的,我们先将除最大的一个圆盘外的其它n-1个圆盘从A->B,借助C,然后将最大的一个圆盘搬到C,最后将刚才的n-1个盘子,从B->C借助A,这样便可完成汉诺塔游戏,借助该递归思想,便可写出如下程序;


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

namespace Homework
{
    class P5_Hanoi
    {
        static void Main(string[] args)         //static关键字用于修饰类的静态成员,所谓静态成员就是属于类的成员而不是属于某一个具体的类实例的成员
        {
            Hanoi h = new Hanoi();
            h.count = 0;
            h.playHanoi(2, 'A', 'B', 'C');

            int result = h.count;
            Console.WriteLine(result);

        }
    }

    //以下类用于完成汉诺塔游戏

    class Hanoi
    {
        public int count = 0;
        public void playHanoi(int n, char from, char temp, char to)
        {
            if (n < 1)
            {
                return;
            }
            else
            {
                playHanoi(n - 1, from, to, temp);
                count++;
                playHanoi(n - 1, from, to, temp);
            }

        }
    }




}


 运行结果截图

用C#写汉诺塔问题_第2张图片

祝学习进步,生活愉快!! 

你可能感兴趣的:(c#,开发语言,算法)