Ciao a tutti ,
sto cercando di fare un programma java che mi calcoli la funzione di Ackermann sia in modo iterativo che ricorsivo. Il metodo ricorsivo l'ho già creato.. ma ho dei problemi con quello iterativo. Il programma gira ma il risultato del metodo iterativo è sbagliato. Ecco qui il codice che ho fatto..
se qualcuno sa darmi una mano grazieeee

import java.util.Scanner;
public class Ackermann
{

public static long ricAck ( long m, long n )
{
if (m == 0) return n + 1 ;

else if (n == 0) return ricAck (m-1, 1) ;

else return ricAck ( m -1, ricAck (m, n-1) );
}

public static long itAck (long [] s , long m , long n)
{
int i = 2 ;
s [0] = m ;
s [1] = n ;

while (i != 1 )
{
if (s[i-1] == 0)
{ s[i-1] = s[i] + 1 ;
i = i -1 ;}
else if ( s[i] == 0 )
{ s[i-1] = s[i-1] -1 ;
s[i] = 1 ;}
else { s[i+1] = s[i]-1;
s[i] = s[i-1] ;
s[i-1]= s[i-1] -1 ;
i = i + 1 ;
}
}
return s[1];

}


public static void main (String[] args)
{
Scanner in= new Scanner (System.in);

long [] s = new long [100000] ;

System.out.println ( "Inserire m :");
long m = in.nextLong();

System.out.println ( "Inserire n :") ;
long n = in.nextLong();


System.out.println("Ackermann(" + m + "," + n + ") = " + ricAck(m,n));
System.out.println("Ackermann(" + m + "," + n + ") = " + itAck(s , m , n)) ;
}
}