Recursion/fr

From Lazarus wiki

English (en) français (fr) 日本語 (ja) 中文(中国大陆)‎ (zh_CN)

Tutoriel de Pascal Objet : Sous-programmes / Récursion

La récursion est un sujet difficile à comprendre. Néanmoins, c'est très facile à appliquer une fois que vous l'aurez compris. La mission de programmation pour ce chapitre impliquera la récursion.

La récursion signifie qu'il est permis à une fonction ou une procédure de s'appeler elle-même. Elle continue de s'appeler jusqu'à une certaine limite.

La fonction de sommation, désignée par ∑ en mathématiques, est un exemple populaire de récursion :

function Sommation (num : integer) : integer;
begin
  if num = 1 then
    Sommation := 1
  else
    Sommation := Sommation(num-1) + num
end;

Supposez que vous appelez Sommation pour 3.

a := Sommation(3);
  • Sommation(3) devient Sommation(2) + 3.
  • Sommation(2) devient Sommation(1) + 2.
  • A 1, la récursion s'arrête ET devient 1.
  • Sommation(2) devient alors 1 + 2 = 3.
  • Sommation(3) devient alors 3 + 3 = 6.
  • a prend alors la valeur 6.

La récursion travaille à reculons jusqu'à ce qu'un point donné soit atteint pour lequel une réponse est définie et travaille en avant avec la définition, résolvant les autres définitions qui dépendent de celle-ci.

Toutes les procédures/fonctions récursives doivent avoir une sorte de test qui arrête la récursion. Sous une condition, appelée le cas de base (condition d'arrêt), la récursion doit s'arrêter. Sous toutes les autres conditions, la récursion doit aller plus profond. Dans l'exemple du dessus, la condition d'arrêt était if num = 1. Si vous ne construisez pas de condition d'arrêt, la récursion soit n'aura pas lieu du tout ou deviendra infinie.

Sommaire