Un Algorithme récursif.

Fermé
nico - 25 févr. 2010 à 00:44
Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 - 25 févr. 2010 à 01:46
Bonsoir tout le monde.

pouvez vous SVP m'aider à comprendre comment dérouler un Algo récursif. j'ai vraiment du mal a voir comment se déroule les appels et surtout le la condition d 'arrêt. (certainement du à l'habitude des algos itératifs)
Merci pour votre aide.
Ex: si je prend comme exemple, le calcule de puissance.
***************************************
fonction puissance (x:reel, a:entier )

si (a=0)
result <--1
sinon
result<--x*puissance (x,a-1);

retourner result;


***********************************
A voir également:

1 réponse

Pacorabanix Messages postés 3248 Date d'inscription jeudi 23 août 2007 Statut Membre Dernière intervention 19 mai 2013 661
25 févr. 2010 à 01:46
l'idée d'un algo récursif, c'est de pouvoir calculer le résultat d'une fonction en rappelant la fonction elle-même avec un cas plus simple.

il faut aussi bien comprendre qu'une fonction peut s'appeler elle-même, et le nouvel appel à la fonction est complètement indépendant de l'appel de base, c'est comme si on appelait une autre fonction.
Ex :

Pour une puissance, on sait que le cas le plus simple c'est x^1, qui doit simplement redonner x.

ensuite, on remarque une chose : si on doit calculer x^n, c'est comme faire x * x^(n-1).

Par exemple, pour calculer x^4 (appel de fonction numéro 1), il faut calculer x^3 et multiplier par x.
Donc on calcule x^3 (appel de fonction numéro 2). pour cela il faut calculer x^2 et multiplier par x.
Donc on calcule x^2 (appel de fonction numéro 3). pour cela il faut calculer x^1 et multiplier par x
Donc on calcule x^1 (appel de fonction numéro 4). Ah ! Mais c'est le cas de départ, ça fait x. On renvoie x à la fonction qui m'a appelée (c'est l'appel numéro 3).
l'appel numéro 3 va multiplier par x cette valeur et donc renvoyer x*x à l'appel numéro 2.
l'appel numéro 2 va multiplier par x ce résultat et renvoyer x*x*x à l'appel numéro 1.
L'appel numéro 1 va multiplier par x ce résultat et donc renvoyer x*x*x*x à la fonction qui a demandé à calculer x puissance 4.

je ne sais pas si j'ai été clair...
1