1.定义
阿克曼函数(Ackermann)是非原始递归函数的例子。它需要两个自然数作为输入值,输出一个自然数。它的输出值增长速度非常高,仅是对于(4,3)的输出已大得不能准确计算。
Ackermann函数定义如下:
若m=0,返回n+1。
若m>0且n=0,返回Ackermann(m-1,1)。
若m>0且n>0,返回Ackermann(m-1,Ackermann(m,n-1))。
2.Java源码
public class Test {
public static void main(String[] args) throws Exception {
Scanner scanner = new Scanner(System.in);
int m = scanner.nextInt();
int n = scanner.nextInt();
if (m >= 0 && n >= 0) {
System.out.println(ackmann(m,n));
}
}
private static int ackmann (int m, int n) {
if (m == 0) return n+1;
if (m > 0 && n == 0) return ackmann(m-1,1);
return ackmann(m-1,ackmann(m,n-1));
}
}
输入: 2 3
结果: 9
版权声明:本文为zhangting19921121原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。