アルゴリズム事典の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)
最終更新:2010年01月25日 19:29