42 lines
935 B
Plaintext
42 lines
935 B
Plaintext
' version 28-10-2016
|
|
' compile with: fbc -s console
|
|
' to do A(4, 2) the stack size needs to be increased
|
|
' compile with: fbc -s console -t 2000
|
|
|
|
Function ackerman (m As Long, n As Long) As Long
|
|
|
|
If m = 0 Then ackerman = n +1
|
|
|
|
If m > 0 Then
|
|
If n = 0 Then
|
|
ackerman = ackerman(m -1, 1)
|
|
Else
|
|
If n > 0 Then
|
|
ackerman = ackerman(m -1, ackerman(m, n -1))
|
|
End If
|
|
End If
|
|
End If
|
|
End Function
|
|
|
|
' ------=< MAIN >=------
|
|
|
|
Dim As Long m, n
|
|
Print
|
|
|
|
For m = 0 To 4
|
|
Print Using "###"; m;
|
|
For n = 0 To 10
|
|
' A(4, 1) or higher will run out of stack memory (default 1M)
|
|
' change n = 1 to n = 2 to calculate A(4, 2), increase stack!
|
|
If m = 4 And n = 1 Then Exit For
|
|
Print Using "######"; ackerman(m, n);
|
|
Next
|
|
Print
|
|
Next
|
|
|
|
' empty keyboard buffer
|
|
While InKey <> "" : Wend
|
|
Print : Print "hit any key to end program"
|
|
Sleep
|
|
End
|