定义阿克曼递归函数:
ACK(0,n)=n+1 n>=0
ACK(m,0)=ACK(m-1,1) m>=1
ACK(m,n)=ACK(m-1,ACK(m,n-1)) m,n>0
常规递归会超过栈深度,深度递归转换成循环处理的方式:
import java.util.*;
public class A {
public static void main(String[] args){
A a = new A();
//System.out.println(a.Ackermann(4,1));
System.out.println(a.AckermannLoop(4,1));
}
class SnapShotStruct
{
int inputX; // 会改变的参数
int inputY; // 会改变的参数
int stage;
// 没有局部变量
}
int Ackermann(int x, int y)
{
// 终止条件
if (0 == x)
{
return y + 1;
}
// 错误处理条件
if (x < 0 || y &