📄 汉诺塔.frm
字号:
VERSION 5.00
Begin VB.Form Form1
Caption = "汉诺塔问题"
ClientHeight = 3960
ClientLeft = 60
ClientTop = 450
ClientWidth = 5940
LinkTopic = "Form1"
ScaleHeight = 3960
ScaleWidth = 5940
StartUpPosition = 3 '窗口缺省
Begin VB.TextBox Text1
Height = 375
Left = 3840
MultiLine = -1 'True
TabIndex = 3
Top = 960
Width = 1095
End
Begin VB.CommandButton Command1
Caption = "计算"
Height = 375
Left = 3840
TabIndex = 2
Top = 2040
Width = 1095
End
Begin VB.ListBox List1
Height = 2940
ItemData = "汉诺塔.frx":0000
Left = 240
List = "汉诺塔.frx":0002
TabIndex = 0
Top = 360
Width = 3135
End
Begin VB.Label Label1
Caption = "输入盘片数"
Height = 375
Left = 3840
TabIndex = 1
Top = 360
Width = 1095
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim num As Long
Sub hanoi(n As Integer, a As String, c As String, b As String) 'Hanoi过程四个参数分别是N个盘数,源柱,目标柱,帮助柱,过程的意思是将N个盘从源柱搬动到目标柱通过帮助柱帮助下。
If (n = 1) Then '当只有一个盘时
num = num + 1
List1.AddItem (Str(num) + ":" + a + "->" + c) '搬动一个盘从源柱到目标柱
Else
Call hanoi(n - 1, a, b, c) '搬动N-1个盘从A柱到B柱,在C柱帮助下
num = num + 1
List1.AddItem (Str(num) + ":" + a + "->" + c)
Call hanoi(n - 1, b, c, a) '搬动N-1个盘从A柱到B柱,在C柱帮助下
End If
End Sub
Private Sub Command1_Click()
Dim n As Integer
n = Val(Text1.Text)
Call hanoi(n, "A", "C", "B") '将N个盘从源柱A柱搬动到目标柱C柱在帮助柱B柱帮助下
List1.AddItem ("共" + Str(num) + "次")
End Sub
Private Sub Text1_Click()
num = 0
List1.Clear
Text1.Text = ""
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -