RosettaCodeData/Task/Ackermann-function/Elena/ackermann-function.elena

33 lines
508 B
Plaintext

import extensions;
// --- Ackermann function ---
ackermann(m,n)
{
if(n < 0 || m < 0)
{
InvalidArgumentException.raise()
};
m =>
0 : { ^n + 1 }
! : {
n =>
0 : { ^ackermann(m - 1,1) }
! : { ^ackermann(m - 1,ackermann(m,n-1)) }
}
}
public program()
{
for(int i:=0; i <= 3; i += 1)
{
for(int j := 0; j <= 5; j += 1)
{
Console.printLine("A(",i,",",j,")=",ackermann(i,j))
}
};
Console.readChar()
}