Bonsoir,
Si vous êtes un(e) habitué(e) du forum alors vous le savez déjà, en Tunisie, on enseigne la section Sciences de l'Informatique pour la première année. Et parmi les malheurs de la "mésaventure", la récursivité.
On nous demande de récursifier à tort et à travers, toutes les procédures qu'on trouve. C'est très énervant ! Pour le calcul d'une factorielle, ça passe mais quand c'est pour un tri à bulles, on se demande si on a vraiment trouvé, puisqu'en réalité, la version récursive de ce tri, proposée par les enseignants, contient une boucle pour (for en Pascal). Ceci est un détail, rentrons dans le sujet.
J'ai un test demain matin et j'ai envie de contourner toutes les questions demandant une solution récursive en donnant une solution itérative qui a l'air d'être récursive. Voilà mon idée :
Voici un exemple moins abstrait, notamment sur une fonction qui remplit un tableau par n entiers:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procédure la_proc_rec(p1:type1; p2:type2.... faire:chaîne) si faire<>rien alors TRAITEMENT; TRAITEMENT; TRAITEMENT; la_proc_rec(p1,p2,....,"rien"); fin si
Je vous demande de me donner vos avis.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure remplir(var T:tab; n:integer; faire:string); begin if faire<>'rien' then begin for i:=1 to n do begin write('remplir la case ',i,' '); readln(T[i]); end; remplir(t,5912,'rien'); {remplir(.....), c'est pour en faire une procédure récursive} {ici 5912 c'est pour rigoler car on peut mettre n'importe quoi} end; end;
Merci!
Partager