这里的汉诺塔规则:有 A B C
三个柱子,在A柱子上有一摞盘子(n个,大的在下面,小的在上面),要求把A柱子上的盘子移动到C柱子上同时保证大盘子在下面小盘子在上面。(网上有另外一个版本:有A
B
C三个位置,一摞盘子在中间的位置上,要求把这一摞盘子换个位置,即最终的结果是把这一摞盘子移到A或B位置均可。)下面是针对我在这里定义的汉诺塔规则的代码,理解这个后其他版本的就可以以此类推了。
先奉上运行结果截图(横着看哦!)填写图片摘要(选填写图片摘要(选
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace 汉诺塔
{
public partial class
Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender,
EventArgs e)
{
textBox1.Text = "";
int
n=int.Parse (textBox2.Text);
bpz(n,"A","B","C");
}
public void bpz(int n,string
A,string B,string C)
{
if (n==1)
textBox1 .Text +=A+
"->"+C+"
";
else
{ bpz( n-1, A, C,
B);
textBox1
.Text +=A+"->"+C+"
";
bpz(n-1,
B, A, C);
}
}
}
}