java - 你如何制作阿克曼函数 "learn"?

标签 java recursion

我将如何着手使以下阿克曼函数“学习”并记住先前迭代的结果,以便它不会一遍又一遍地重新计算相同的东西?例如:它应该知道,只要给定输入 (2,2),它就应该返回 7 而无需再次运行计算。

public static BigInteger ackermann(BigInteger a, BigInteger b) {
    if (a.equals(BigInteger.ZERO)) {
        return b.add(BigInteger.ONE);
    }
    if (b.equals(BigInteger.ZERO)) {
        return ackermann(a.subtract(BigInteger.ONE),BigInteger.ONE);
    }
    return ackermann(a.subtract(BigInteger.ONE), ackermann(a, b.subtract(BigInteger.ONE)));
}

最佳答案

看看使用 Java 8 的内存:https://dzone.com/articles/java-8-automatic-memoization .这是迄今为止实现您的目标的最优雅的方式。

关于java - 你如何制作阿克曼函数 "learn"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33056734/

相关文章:

java - Spring MVC响应类型继承: Missing sub class fields

java - 绘制递归雪花

java - 需要不兼容的类型 : Class<T> found: Class<CAP#1> where T is a type-variable

java - 如何在Web应用程序中高效地使用quartz框架?

java - Java SE 是否与 JDK 相同?

java - map 中键的类型不匹配:预期的org.apache.hadoop.io.Text,当我使用.txt文件作为输入时,收到的org.apache.hadoop.io.LongWritable

c - 关于递归的问题

function - 是否可以在 f# 中编写这样的递归分组函数

c# - .NET,C#,反射 : list the fields of a field that, 本身,有字段

algorithm - 假设递归函数的递归关系