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 C# (C Sharp) effectuant le calcul de la fonction d'«Ackermann» dans ses positions inférieures :
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
-
- namespace AckermannSamples
- {
- class Program
- {
- static int Ackermann(int M, int N)
- {
- if (M == 0) return N + 1;
- else
- {
- if (N == 0) return Ackermann(M - 1, 1);
- else return Ackermann(M - 1, (Ackermann(M, N - 1)));
- }
- }
-
- static void Main(string[] args)
- {
- int I, J;
- for (I = 1; I <= 2; I++) for (J = 1; J <= 10; J++)
- {
- Console.WriteLine("Ackermann(" + I + "," + J + ")=" + Ackermann(I, J));
- }
- }
- }
- }
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 : Samedi, le 16 août 2014