某同学在上楼梯时,优势一步一级楼梯,有时一步两级、如果楼梯有N级,请穷举他上楼梯的所有方法
来源:百度知道 编辑:UC知道 时间:2024/05/24 08:03:44
Private Sub Form_load()
Dim s() As String, num As Long, i As Long
i = Val(InputBox("输入楼梯阶数" & vbCrLf & "PS:不要输入太大的数,以防递归栈爆满,系统崩溃,呵~"))
upstairs i, s, num
Debug.Print Join(s, vbCrLf)
Debug.Print num & " 种走法"
End Sub
Sub upstairs(ByVal stairnum As Integer, ByRef steps() As String, ByRef methodn As Long)
'将stairnum台阶时的所有可能走法保存在数组steps()中,走法数目保存在methodn中
Dim i As Long
If stairnum = 1 Then
methodn = 1
ReDim steps(1 To methodn)
steps(1) = 1
End If
If stairnum = 2 Then
methodn = 2
ReDim steps(1 To methodn)
steps(1) = 11
steps(2) = 2
End If
If stairnum > 2 Then
Dim a() As String, b() As String, methoda As Long, methodb As Long
upstairs stairnum - 1, a, methoda
upstairs stairnum - 2, b, methodb
ReDim steps(methoda + methodb)
For i = 1 To methoda
steps(i) = a(i) & 1
Next
For i = 1 To methodb
steps(i + m