30 lines
740 B
Plaintext
30 lines
740 B
Plaintext
Private Function Ackermann_function(m As Variant, n As Variant) As Variant
|
|
Dim result As Variant
|
|
Debug.Assert m >= 0
|
|
Debug.Assert n >= 0
|
|
If m = 0 Then
|
|
result = CDec(n + 1)
|
|
Else
|
|
If n = 0 Then
|
|
result = Ackermann_function(m - 1, 1)
|
|
Else
|
|
result = Ackermann_function(m - 1, Ackermann_function(m, n - 1))
|
|
End If
|
|
End If
|
|
Ackermann_function = CDec(result)
|
|
End Function
|
|
Public Sub main()
|
|
Debug.Print " n=",
|
|
For j = 0 To 7
|
|
Debug.Print j,
|
|
Next j
|
|
Debug.Print
|
|
For i = 0 To 3
|
|
Debug.Print "m=" & i,
|
|
For j = 0 To 7
|
|
Debug.Print Ackermann_function(i, j),
|
|
Next j
|
|
Debug.Print
|
|
Next i
|
|
End Sub
|