Ackermann函数定义如下:
若m=0,返回n+1。
若m>0且n=0,返回Ackermann(m-1,1)。
若m>0且n>0,返回Ackermann(m-1,Ackermann(m,n-1))。
import java.util.Scanner;
public class Main {
private static int[][] A;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();
int n=sc.nextInt();
A=new int[m+1][100001];
fun(m,n);
System.out.print(A[m][n]);
}
private static void fun(int m,int n){
if(A[m][n]!=0){
return;
}
if(m==0){
A[m][n]=n+1;
return;
}
if(n==0){
fun(m-1,1);
A[m][n]=A[m-1][1];
return;
}
fun(m,n-1);
fun(m-1,A[m][n-1]);
A[m][n]=A[m-1][A[m][n-1]];
}
}