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