アルゴリズム事典のacker.cからの移植です。 ActiveBasic? 4.24.00で動作確認。

/***********************************************************
acker.c -- Ackermann (アッカーマン) 関数
***********************************************************/
#define TEST

#ifdef TEST
Dim count As Long
#endif

Function A(x As Long, y As Long) As Long
#ifdef TEST
count++
#endif

If x = 0 Then
A = y + 1
Exit Function
End If

If y = 0 Then
A = A(x - 1, 1)
Exit Function
End If

A = A(x - 1, A(x, y - 1))
End Function


'テストコード
#console
Print "A(3,3)" + Str$(A(3, 3)) + Ex"?n"

#ifdef TEST
Print "A(x, y) は" + Str$(count) + Ex"回呼び出されました.?n"
#endif

Sleep(10000)