Récursivité

Sommaire

Index

Introduction

La récursivité consiste a écrire une fonction qui s’appelle elle-même afin de réaliser des calculs.

Calcul de factorielle

Le calcul de la fonction factorielle s’écrit ainsi:

\(n! = 1 \times 2 \times ... \times n\)

Par exemple:

\(3! = 1 \times 2 \times 3\)

Il est assez facile d’en déduire que:

\[4! = 1 \times 2 \times 3 \times 4\]

\[4! = 3! \times 4\]

On peut alors généraliser:

\[n! = (n - 1)! \times n \]

Sachant que \(1! = 1\)

Fonction factorielle

La fonction factorielle peut s’écrire ainsi:

1 : Fonction Fact(n: entier)
2 : Début fonction
3 :     SI n > 1
4 :         retourne Fact(n - 1) * n
5 :     SINON
6 :         retourne 1
7 :     FIN SI
8 : FIN fonction

Exécution

L’exécution se fait en appelant la fonction Fact.

Application

Compte à rebours

Créer un algorithme permettant d’afficher un compte à rebours de manière récursive

Compter jusqu’à …

Modifier l’algorithme précédent pour créer un algorithme permettant d’afficher un comptage de 1 à N de manière récursive.

Conversion décimal vers binaire

Réaliser la conversion de décimal vers binaire d’un nombre peut se faire de manière récursive.

Par exemple: \((25)_{10} = (?)_2\)

Conversion décimal vers binaire de 25

Ceci peut se représenter ainsi:

Écrire l’algorithme permettant de réaliser cette opération de conversion.

Utiliser l’outil de programmation en pseudo-JS

Placer les fichiers dans un dossier nommé exercices-recursivite

Calculer la somme d’un tableau

Écrire l’algorithme permettant de calculer la somme des éléments d’un tableau de manière récursive.

Fibonacci

La suite de Fibonacci est définie comme suit :

\[ F_n= \left\{ \begin{array}{ccr} 1 & si~n \lt 2 \\ F_{n-1}+F_{n-2} & si~n \ge 2 \\ \end{array} \right. \]

Ecrire un algorithme récursif calculant Fib(n)

Calcul de suite

Soit la suite définie par :

\[ U_n= \left\{ \begin{array}{ccr} 1 & n \lt 2 \\ 3U_{n-1}+U_{n-2} & sinon \\ \end{array} \right. \]

Ecrire un algorithme récursif permettant de calculer le nième terme de la suite.

Pair / Impair

Un nombre N est pair si (N-1) est impair, et un nombre N est impair si (N-1) est pair. Ecrire deux fonctions récursives mutuelles pair(N) et impair(N) permettant de savoir si un nombre N est pair et si un nombre N est impair.

Trouver le plus grand nombre dans un tableau

Écrire l’algorithme permettant de trouver le plus grand nombre dans un tableau de manière récursive.

Palindrome

Un mot est un palindrome si on peut le lire dans les deux sans de gauche à droite et de droite à gauche. Exemple ROTOR est un palindrome. Ecrire un algorithme récursif permettant de vérifier si un mot est palindrome.

Sous-séquence

Étant donné deux séquences, trouvez la longueur de la sous-séquence la plus longue présente dans les deux. Une sous-séquence est une séquence qui apparaît dans le même ordre relatif, mais pas nécessairement contiguë.

Par exemple, “abc”, “acg”, “bde”, “adg”, “abefg”, etc sont des sous-séquences de “abcdefg”. Ecrire une fonction pour compter la plus longue sous-séquence.