Estou tentando realizar uma abordagem iterativa para a função de ackermann,todavia o código está gerando algumas respostas erradas, alguém por favor poderia me ajudar?
public static BigInteger ackermann(BigInteger m, BigInteger n){
Stack<BigInteger> stack = new Stack<BigInteger>();
stack.add(m);
while(!stack.isEmpty()){
m=stack.pop();
if(m.equals(BigInteger.ZERO)||n.equals(BigInteger.ZERO))
n=n.add(m.add(BigInteger.ONE));
else{
stack.add(m.subtract(BigInteger.ONE));
stack.add(m.add(BigInteger.ONE));
n.subtract(BigInteger.ONE);
}
}
return n;
}