Fonction récursive d'Ackermann |
Ce TD a pour but de mettre en oeuvre une petite fonction récursive simple à deux variables. La fonction d'Ackermann est définie de la façon suivante :
A(m,n) = A(m-1, A(m, n-1)) pour m>O et n>O
A(O,n) = n+1 pour n>O
A(m,O) = A(m- 1, 1) pour m>O
Vous écrirez donc une fonction à deux paramètres qui fournira la valeur de la fonction d'Ackermann pour ces deux paramètres. De manière à rendre la chose un peu plus visuelle, vous ajouterez à votre fonction un paramètre "booléen" qui, positionné à vrai imprimera deux petits messages du type Entrée Ackermann(m, n) et Sortie Ackermann(m, n) = ... avec les valeurs courantes de m, n et du résultat.
Ce petit mécanisme permettant de suivre le déroulement d'un programme est généralement appelé trace.
Le programme principal demandera d'entrer les valeurs de m et n, la valeur du paramètre "booléen" de trace et fournira le résultat en sortie.
Pour vérification, voici quelques valeurs de la fonction d'Ackermann :
Ack(2, 0) = 3
Ack(3, 3) = 61
Ack(2, 4) = 11