Ackerman递归方程
public int ackerman(int m,intn){ //m,n分别为acker的两个参数
Stack<Integer> s1=new Stack<Integer>(); //用栈来存储参数,s1存m,s2存n
Stack<Integer> s2=newStack<Integer>();
s1.push(m);
s2.push(n);
while(!s1.isEmpty()){ //s1为空时计算结束,s2此时存了结果
inti=s1.pop(); //i,j分别存入s1,s2的栈顶,首次执行while循环存入的是m,n的值
int j=s2.pop();
if(i==0){ //if-elseif-elseif分别对应三种情况
s2.push(j+1);
}elseif(i!=0&&j==0){
s1.push(i-1);
s2.push(1);
}elseif(i!=0&&j!=0){
s1.push(i-1);
s1.push(i);
s2.push(j-1);
}
}
return s2.pop();
}