suivant: Récursivité ayant plusieurs appels
monter: Récursivité ayant un seul
précédent: Les carrés
Table des matières
Index
Ces programmes se trouvent dans examples/recur/triangle.cxx.
On trace un triangle puis le triangle qui joint les milieux des cotés etc...on s'arrête quand les segments à dessiner deviennent trop petits.
On tape dans un éditeur de programme (que l'on ouvre avec Alt+p),
puis on valide avec OK :
triangles(A,B,C):={
DispG();
triangle(A,B,C);
if (longueur2(A,B)>0.01) {
triangles(A+(B-A)/2,B+(C-B)/2,C+(A-C)/2);
}
};
On tape :
triangles(-2.0,1,2*i)
On obtient le dessin des triangles du plus grand au plus petit :le dessin
du triangle (-2,1,2*i) puis du triangle (-0.5,0.5+i,-1+i,)....
Remarque
si on tape
trianglesp(A,B,C):={
DispG();
if (longueur2(A,B)>0.01) {
trianglesp(A+(B-A)/2,B+(C-B)/2,C+(A-C)/2);
}
triangle(A,B,C);
};
On tape :
trianglesp(-2.0,1,2*i)
le dessin des triangles ne se fera pas dans le même ordre et se fera
du plus petit au plus grand.
Généralisation
On trace un triangle ABC, puis le triangle MNP avec :
= a*
,
= a*
,
= a*
,
où a est un nombre réel entre 0 et 1.
trianglep(A,B,C,a):={
DispG();
triangle(A,B,C);
if (longueur2(A,B)>0.01) {
trianglep(A+(B-A)*a,B+(C-B)*a,C+(A-C)*a,a);
}
};
On tape par exemple :
trianglep(-2.0,1.0,2*i,0.2)
Documentation de giac écrite par Renée De Graeve