Section courante

A propos

Section administrative du site

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 ASP.NET effectuant le calcul de la fonction d'«Ackermann» dans ses positions inférieures :

ASP.NET (VB .NET) ASP.NET (C# (C Sharp))
  1. <%@ Page Language="VB" %> 
  2. <script runat="server"> 
  3.     Function Ackermann(M As Integer,N As Integer) As Long
  4.      If M = 0 Then
  5.           Ackermann=N + 1
  6.      Else
  7.           If N = 0 Then 
  8.                Ackermann=Ackermann(M-1,1)
  9.           Else 
  10.                Ackermann=Ackermann(M-1,(Ackermann(M,N-1)))
  11.           End If
  12.      End If
  13. End Function 
  14. </script> 
  15. <%
  16. Dim  I As Integer
  17. Dim  J As Integer
  18. For I = 1 To 2
  19.     For J = 1 To 10
  20.         Response.Write("Ackermann(" & I & "," &  J & ")=" & Ackermann(I, J) & "<br />")
  21.     Next
  22. Next 
  23. %>
  1. <%@ Page Language="C#" %> 
  2. <script runat="server"> 
  3.     static int Ackermann(int M, int N)
  4.     {
  5.         if (M == 0) return N + 1;
  6.         else
  7.         {
  8.             if (N == 0) return Ackermann(M - 1, 1);
  9.             else return Ackermann(M - 1, (Ackermann(M, N - 1)));
  10.         }
  11.     }  
  12. </script> 
  13. <%
  14. int I, J;
  15. for (I = 1; I <= 2; I++) for (J = 1; J <= 10; J++)
  16.     {
  17.         Response.Write("Ackermann(" + I + "," + J + ")=" + Ackermann(I, J) + "<br />");
  18.     }  
  19. %>

on obtiendra le résultat suivant :

Ackermann( 1, 1)= 3
Ackermann( 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

Science - Mathématique

Dernière mise à jour : Samedi, le 31 août 2017