La fabuleuse fonction d'«Ackermann» de 1926, laquelle, lorsqu'on met des chiffres de plus en plus gros dans le premier paramètre, augmente beaucoup plus vite que l'exponentiel! Sa formule est cité dans presque tous les livres de récursivité, mais paradoxalement, son nom, Wilhelm Ackermann, est difficile à trouver! Voici un code source QuickPascal effectuant le calcul de la fonction d'«Ackermann» dans ses positions inférieures :
Program AckermannExample;
Function Ackermann(M,N:Integer):Integer;Begin
If M = 0 Then Begin
Ackermann:=N + 1;
End
Else
Begin
If N = 0 Then Ackermann:=Ackermann(M-1,1)
Else Ackermann:=Ackermann(M-1,(Ackermann(M,N-1)));
End;
End;
Var
I,J:Byte;
BEGIN
For I := 1 to 2 do Begin
For J := 1 to 10 do Begin
WriteLn('Ackermann(',I,',',J,')=',Ackermann(I, J));
End;
End;
END.
on obtiendra le résultat suivant :
Ackermann( 1, 1)= 3Ackermann( 1, 2)= 4
Ackermann( 1, 3)= 5
Ackermann( 1, 4)= 6
Ackermann( 1, 5)= 7
Ackermann( 1, 6)= 8
Ackermann( 1, 7)= 9
Ackermann( 1, 8)= 10
Ackermann( 1, 9)= 11
Ackermann( 1, 10)= 12
Ackermann( 2, 1)= 5
Ackermann( 2, 2)= 7
Ackermann( 2, 3)= 9
Ackermann( 2, 4)= 11
Ackermann( 2, 5)= 13
Ackermann( 2, 6)= 15
Ackermann( 2, 7)= 17
Ackermann( 2, 8)= 19
Ackermann( 2, 9)= 21
Ackermann( 2, 10)= 23
Voir également
Dernière mise à jour : Dimanche, le 4 mai 2014