回 帖 发 新 帖 刷新版面

主题:求汉诺塔程序!

采用递归方法来显示出汉诺塔移动的步骤,谢谢!

回复列表 (共3个回复)

沙发

貌似数据结构与算法在讲递归的时候都有汉诺塔的例题

板凳

参照C语言已经把程序开发出来了,但对递归还是不太清楚!惭愧

3 楼


private void Form7_Load(object sender, EventArgs e)
        {
            int num = Convert.ToInt32(textBox1.Text);
            char B='1'; char C='2';char D='3';
            Tower(num, B, C, D);
        }
        /// <summary>
        /// 汉诺塔算法
        /// </summary>
        /// <param name="a">要移动的盘子的数量</param>
        /// <param name="b">盘子开始放置的树桩</param>
        /// <param name="c">盘子要被移到的树桩</param>
        /// <param name="d">用做临时存放处的树桩</param>
        public void Tower(int a, char b, char c, char d)
        {
            if (a == 1)
            {
                textBox2.Text += b + "->" + d + "  \n";
            }
            else
            {
                 Tower(a-1,b,d,c);
                textBox2.Text+=b+"->"+d+"  \n";
                Tower (a-1,c,b,d);
            }
        }

我来回复

您尚未登录,请登录后再回复。点此登录或注册