汉诺塔问题的VB解决方案
?牐犛腥覣、B、C,A柱子上有64个圆环,圆环大小不等,大的在下,小的在上,要求将这64个圆环从A柱子移到C柱子,在移动过程中可借助B柱子,每次只准移动一个圆环,且在移动的过程中在三根柱子上都保持大盘在下小盘在上的局面。要求编程写出移动步骤。
#1?牐牱治龉蹋?
?牐犕ü芙幔颐墙玭个圆环从A柱子移到C柱子可以分解为以下三个步骤:
?牐?1.将A上n-1个圆环从C柱子先移到B柱子上。
?牐?2.将A上剩下的一个盘移到C柱子上。
?牐?3.将n-1个盘从B柱子上借助A柱子移到C柱子上。
?牐犕ü槟桑厦娴娜鑫侍庥挚勺芙岢闪礁鑫侍猓?
?牐?1.将n-1个盘从一根柱子移到另一根柱子(n>1),这是一个递归过程。
?牐?2.将1个圆环从一根柱子移到另一根柱子。
?牐犚虼耍?1个问题通过子程序hano()来实现,第2个问题通过子程序movet()来实现。
?牐牐Ш号邓侍庠闯绦?
?牐燩rivate Sub movet(getone As String,putone As String) '从一根柱子移到另一根柱子的子程序
?牐燭xtList.Text=TxtList.Text+getone+"->"+putone+vbCr+vbLf '输出
?牐燛nd Sub
?牐燩rivate Sub hano(n As Integer,one As String,two As String,three As String) '从一根柱子移动n-1个圆环到另一根柱子
?牐營f n=0 Then '无操作数时的处理
?牐燛lse
?牐營f n=1 Then
?牐爉ovet one,three
?牐燛lse
?牐爃ano n-1,one,three,two
?牐爉ovet one,three
?牐爃ano n-1,two,one,three
?牐燛nd If
?牐燛nd If
?牐燛nd Sub
?牐燩rivate Sub CmdExit_Click() '退出按钮
?牐燯nload Me
?牐燛nd Sub
?牐燩rivate Sub CmdList_Click()'列表按钮
?牐燭xtList.Text=""
?牐燚im m As Integer
?牐爉=Val(TxtInput.Text) '将从文本框输入数据放入变量中
?牐爃ano m,"A","B","C"
?牐燛nd Sub
?牐犝庋赩B中解决汉诺塔问题的程序就完成了,是不是很简单?以上程序在VB 6.0下调试通过。