Die Ackermann-Funktion ist für zwei Variable
und
definiert:
Interessanterweise geht der Rechenaufwand für diese Funktion sehr rasch ``gegen Unendlich''...
public class Ackermann {
static long ackermann(long n, long m) {
if (n==0) return m+1;
else if (m==0) return ackermann(n-1,1);
else return ackermann(n-1, ackermann(n,m-1));
}
public static void main (String [] args) {
int x = Integer.parseInt(args[0]);
int y = Integer.parseInt(args[1]);
System.out.println("a(" + x + "," + y + ") = " + ackermann(x,y));
}
}
Für die Zahlen
und
erhalten wir beispielsweise (rechne nach...):
alfred@duron:~/java/themen> java Ackermann 2 11 a(2,11) = 25