Aller au contenu principal

Module 05 · Leçon 1

Récurrence d'ordre 1

180 minanalyse · pascal
Affichage du code

Ce que vous saurez faire

  • Identifier une récurrence d'ordre 1
  • Écrire l'algorithme itératif d'une suite récurrente
  • Calculer U(n) à partir de U(0) et de la relation

Avant de commencer

Une suite mathématique comme U(n) = U(n-1) + 3 avec U(0) = 2 se calcule terme par terme. Comment traduire cela en algorithme ?


1. Définition

Exemple : U(n) = 2 × U(n−1) + 1 avec U(0) = 0.

Termes successifs : 0, 1, 3, 7, 15, 31, …


2. Algorithme itératif

L'idée : maintenir une variable qui contient le terme courant, puis appliquer la relation à chaque tour.

DEF FN U(n : entier) : entier
  res ← 0           { U(0) }
  Pour i de 1 à n Faire
    res ← 2 * res + 1
  FinPour
  U ← res
Fin U

3. Trace d'exécution

Pour U(n) = 2 × U(n−1) + 1 avec U(0) = 0, calcul de U(4) :

Trace d'exécution
0 / 5
Instructionires
01···??
02···??
03···??
04···??
05···??

4. Exemples classiques

Suite arithmétique

U(n) = U(n−1) + r avec U(0) = a.

FUNCTION Arith(n : integer; a, r : integer) : integer;
VAR i, res : integer;
BEGIN
  res := a;
  FOR i := 1 TO n DO
    res := res + r;
  Arith := res;
END;

Suite géométrique

U(n) = U(n−1) × q avec U(0) = a.

FUNCTION Geo(n : integer; a, q : integer) : integer;
VAR i, res : integer;
BEGIN
  res := a;
  FOR i := 1 TO n DO
    res := res * q;
  Geo := res;
END;

5. Exercices

Exercice 1facile
Suite simple

Calculer U(5) pour U(n) = U(n−1) + 4, U(0) = 1.

Voir le corrigé

U(0)=1, U(1)=5, U(2)=9, U(3)=13, U(4)=17, U(5)=21. Résultat : 21.

Exercice 2moyen
Somme d'une suite (type bac courant)

Soit U(n) = U(n−1) + n avec U(0) = 0. C'est la somme 0+1+2+…+n. Écrire une fonction Pascal qui calcule U(n) puis tester pour n = 10. Comparer avec la formule fermée n(n+1)/2.

Voir le corrigé
FUNCTION SommeJusqu(n : integer) : integer;
VAR
  i, res : integer;
BEGIN
  res := 0;
  FOR i := 1 TO n DO
    res := res + i;
  SommeJusqu := res;
END;

BEGIN
  Writeln(SommeJusqu(10));   { 55 }
  Writeln(10 * 11 DIV 2);    { 55 }
END.
Exercice 3difficile
Suite avec deux états (hors bac, bonus)

Soit V(n) = V(n−1) + V(n−2) (suite de Fibonacci) avec V(0) = 0 et V(1) = 1. C'est une récurrence d'ordre 2. Écrire une fonction itérative qui calcule V(n).

Voir le corrigé
FUNCTION Fibo(n : integer) : integer;
VAR
  i, a, b, c : integer;
BEGIN
  IF n < 2 THEN
    Fibo := n
  ELSE
  BEGIN
    a := 0; b := 1;
    FOR i := 2 TO n DO
    BEGIN
      c := a + b;
      a := b;
      b := c;
    END;
    Fibo := b;
  END;
END;

Pour une récurrence d'ordre 2, on garde deux variables (a et b) pour les deux termes précédents.


6. Erreurs fréquentes au bac

  • Oublier l'initialisation res ← U(0) avant la boucle.
  • Faire Pour i de 0 à n au lieu de 1 à n (cela ferait un tour de trop : U(n+1)).
  • Confondre U(n−1) (ancien) et U(n) (nouveau) — écraser l'ancien avant de s'en servir.

7. Quiz

Quiz (5 questions)

1

Une récurrence d'ordre 1 dépend de :

2

Pour calculer U(n) itérativement, on commence par :

3

Pour U(n) = U(n-1) × 3 avec U(0) = 2, U(3) vaut :

4

Pourquoi préférer l'itératif au récursif pour ces suites ?

5

Combien de variables sont nécessaires pour une récurrence d'ordre 2 itérative ?

Bravo d'être arrivé jusqu'ici. Marquez la leçon terminée pour ancrer le progrès.