我需要找到阿克曼函数的优化并解释阿克曼问题本身的问题。但是,我不确定我应该从哪里开始。我知道阿克曼函数的增长速度比任何原始递归函数都快。也许使用 BigInteger 存储结果会有所帮助?或者也许使用记忆?
例如,如果我们知道 A(0,1) = 1+1, A(1,0) = A(0,1), A(1, 1) = A(0,A(1,0)) 我可以根据“n”从那里构建。
这听起来合理还是无法实现?是什么实际问题导致它即使对于少数人也能如此快速地增长?
class Ackermann
{
static int ack(int m, int n)
{
if (m == 0)
{
return n + 1;
}
else if((m > 0) && (n == 0))
{
return ack(m - 1, 1);
}
else if((m > 0) && (n > 0))
{
return ack(m - 1, ack(m, n - 1));
}else
return n + 1;
}
public static void main(String args[])
{
System.out.println(ack(1, 2));
}
}