Aller au contenu

Algorithme récursif

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 11 février 2006 à 12:51 et modifiée en dernier par Nataraja (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

Modèle:SérieLangagesInfo Les algorithmes récursifs ou fonctions récursives sont fondamentaux en informatique et correspondent à l'idée d'une fonction qui s'appelle elle même.

Nous en donnons ici une approche intuitive pour ensuite nous intéresser au formalisme rigoureux qui définit cette notion.

Approche intuitive

Prenons l'exemple de la factorielle. Celle-ci se définit intuivivement pour des entiers positifs par la fonction suivante:

L'idée de la récursivité est d'utiliser une définition équivalente par une suite récurrente:

Ceci peut alors se traduire par le programme suivant en pseudo-langage:

factorielle(entier k):
si k=0
 alors renvoyer 1
 sinon renvoyer k * factorielle(k-1)
finsi

Tous les langages de programmation modernes proposent une implémentation de la récursivité. Nous en donnons ici un exemple en Caml:

let rec factorielle n=function
|0->1
|n->n*factorielle(n-1);;

Ici, on note que préciser que factorielle(0)=1 est fondamental: sans lui l'algorithme s'appelle indéfiniment. Le cas n=0 est aussi appelé cas de base, sans lui l'algorithme ne peut terminer. On peut programmer ainsi d'autres suites telles que la suite de Fibonacci ou la suite de Syracuse.

Mais les algorithmes récursifs ne se limitent pas à de telles applications et permettent de travailler sur des structures de données définies récursivement, ou plus généralement sur des ensembles munis d'une relation bien fondée.

Définition

Soit un ensemble sur lequel est définie une relation d'ordre bien fondée.

Voir aussi