• Aucun résultat trouvé

La récursivité

N/A
N/A
Protected

Academic year: 2022

Partager "La récursivité"

Copied!
10
0
0

Texte intégral

(1)

La récursivité

1.Définition.

2. Exemples.

3. la récursivité croisée.

******************************************************

1.Définition:

Une fonction ou une procédure récursive est une fonction qui s'appelle elle même. À chaque appel récursif d’une procédure ou d’une fonction, de nouvelles variables locales sont créées et les résultats correspondants sont empilés, de sorte que le résultat du dernier appel demeure le premier qui soit accessible.

Exemple : La somme de nombres Somme(n) = n + Somme(n – 1)

Pour que cette définition soit consistante, il faut poser que : Somme(0) = 0 FUNCTION Somme(Nombre : INTEGER) : INTEGER;

BEGIN

IF Nombre = 0 THEN Somme := 0

ELSE Somme := Nombre + Somme(Nombre – 1);

END;

2.Exemples de traitements récursifs:

2.1. Le produit de nombres:

Le produit des 10 premiers entiers, par exemple, est égal à 10 fois le produit des neuf entiers qui précèdent le nombre 10. Tout comme la somme, pour que cette définition soit consistante, il faut poser que : Fact(0) = 1 :

Toujours bien spécifier le cas de base qui constitue la condition d’arrêt de la récursivité

(2)

fonction factorielle (n: Naturel) : Naturel début

si n = 0 alors factorielle←1 sinon

factorielle← n * factorielle ( n-1) ; Finsi

Fin.

Afin d’éviter des boucles infinies il convient:

– De définir la condition d’arrêt que l’on testera avant l’appel récursif.

– De s’assurer que l’on converge bien vers la condition d ’arrêt grâce aux paramètres.

– De ne pas oublier que la valeur des paramètres est fixée par l’appelant.

Le raisonnement itératif :

Expliciter dans le schéma de l’algorithme que l’on résoud un problème en N étapes, au cours desquelles le même travail est réalisé sur des variables différentes.

Le raisonnement récursif :

Expliciter dans le schéma de l’algorithme la spécificité de la Nième étape, exprimée en faisant appel globalement au travail réalisé par ce même algorithme au cours des N-1 autres étapes.

Remarques sur la récursivité

La récursivité peut simplifier considérablement certains problèmes.

Un appel de fonction/procédure à un coût non négligeable. Les programmes récursifs sont souvent plus coûteux que leurs homologues non récursifs.

2.2. le PGCD :

Calcul du Plus Grand Commun Diviseur (PGCD) de deux nombres :

• Définition mathématique : Soient deux nombres a et b. Si a est positif, le PGCD de a et de 0 est a ; Si b est strictement positif et a est positif, le PGCD de a et b est égal au PGCDD de b et du reste de la division entière de a par b.

• Exemple A=30, b=18

PGCD (30,18) = PGCD(18,12) = PGCD(12,6) = PGCD(6,0)Le PGCD de 30 et de 18 est donc égal à 6

• Algorithme

Fonction PGCD(A,B) : entier Début

Si (B = 0) alors PGCDß A Sinon

PGCDß PGCD (B, A mod B) Fin de Si

Fin

2.3 .Puissance d’un nombre :

Fonction PUISSANCE (x, puiss) :entier

(3)

Début

Si (puiss = 0) alors {condition d’arrêt}

Puissance← 1 Sinon

Puissance← x*Puissance (x, puiss-1);

FSi Fin.

2.4

suite de Fibonacci

function Fibonacci(N: NATURAL) : integer

(4)

begin

if N<=1 then

Fibonacci:= 1

(5)

Else Fibonacci := Fibonacci(N-1)+Fibonacci(N-2);

end;

Modifiez la fonction de manière à afficher la valeur de l'argument N pour chaque appel récursif, ainsi que le nombre total d'appels récursifs.

(6)

3.La récursivité croisée

Trace d'exécution:

Un 6

(7)

Program RecursiviteCroisee ; Procedure Un ( Var N : Integer ) ; Begin

Writeln ( 'Un' ,N ) ; If N > 0 Then Begin

N := N - 1 ; Deux ( N ) End

End ;

Deux 5

Un 4

(8)

Procedure Deux ( Var N : Integer ) ; Begin

Writeln ( 'Deux ’, N) ; If N > 0 Then

Begin N := N - 1 ; Un ( N ) End End ;

Var n : Integer ;

Begin n := 6 ; Un ( n ) End.

Deux 3

Un 2

Deux 1

(9)

Un 0

(10)

Références

Documents relatifs

[r]

[r]

Une chaine ch qui contient 20 caractères au max Une constante msg qui contient ‘’BON TRAVAIL’’. Un entier qui peut aller de -35000

- Chaque variable doit être déclarée dans la procédure qui l’utilise et utilisée seulement dans cette procédure.. - Chaque variable doit être typée, pour les bonnes

Il faut comparer les ordonnées de deux points de même abscisse, l’un sur C f , l’autre sur (D)... En discutant suivant les valeurs du réel m, trouver graphiquement le nombre

[r]

Exemple de sujets du baccalauréat auxquels Alice a répondu : Montrer que les résultats sont cohérents avec l'hypothèse suivante : il intervient 2 gènes indépendants.. Proposer

La surface d’un quadrilatère est maximum quand celui-ci est inscriptible dans un cercle.. Cette propriété résulte de la formule de Bretscheider qui donne l’aire A