Délocalisation de variable (Charge du stack)
Bonjour,
Je dois indiquer, lors d'un exercice, si je peux "délocaliser" une variable "k" sans modifier l'effet de la procédure.
En réécrivant le code, j'ai trouvé si je peux ou pas. Dans mon cas, je NE PEUX PAS. Lors de la délocalisation de celle-ci, le résultat obtenu change.
MAIS, je ne sais pas expliquer pourquoi ... Comment peut-on expliquer ceci ?
voici mon bout de code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
PROCEDURE CadreF1 (n: INTEGER): INTEGER;
PROCEDURE F1 (n: INTEGER): INTEGER;
VAR
k: INTEGER ;
BEGIN (*F1*)
IF n <= 1 THEN RETURN n END;
k := n - 2;
RETURN F1(n-1) + F1(k)
END F1;
BEGIN (*CadreF1*)
RETURN F1(n)
END CadreF1; |