suivant: Quelques exemples de récursivité
monter: La double suite des
précédent: Avec un programme iteratif
Table des matières
Index
Cette fois on a une seule façon de voir le dessin récursif :
spiralers2(A,B,C,0) c'est le triangle(A,B,C)
si n>0, spiralers2(A,B,C,n) est formé des segments ACn et C(n-1)Cn, de
spiraler1s(A,B,C,n-1) puis dessegments ABn et B(n-1)Bn.
On tape :
//meme dessin que spirale2(A,B,C,n) mais en recursif
//cette fois on a une seule facon de voir le dessin
//(analogue a spiraler1s)
//et sans repasser sur le meme trait
//spiralers2(A,B,C,0)=triangle(A,B,C) si n>0,
//spiralers2(A,B,C,n)=segments AN et MN et spiraler1s(A,B,C,n-1)
//et segments AQ et PQ (M=C(n-1),N=Cn,P=B(n-1),Q=Bn)
spiralers2(A,B,C,n):={
local k,t,M,N,P,Q;
k:=longueur(A,C)/longueur(A,B);
t:=angle(A,B,C);
if (n>0) {
M:=similitude(A,k^n,n*t,B);
N:=similitude(A,k,t,M);
segment(M,N);
segment(A,N);
spiralers2(A,B,C,n-1);
P:=similitude(A,1/k^n,-n*t,C);
Q:=similitude(A,1/k,-t,P);
segment(P,Q);
segment(A,Q);
} else
triangle(A,B,C);
};
On peut aussi rajouter un paramètre s supplémentaire qui donnera le
sens du triangle ABC : s=1 si le triangle ABC est direct et
s=-1 sinpn.
On tape :
//spiraler2s(A,B,C,1,3) + spiraler2s(A,C,B,-1,3)
//equivalent a spiralers2(A,B,C,3)
//s= signe de l'angle oriente (AB,AC) car angle(A,B,C)=val abs de cet angle
spiraler2s(A,B,C,s,n):={
local k,t;
k:=longueur(A,C)/longueur(A,B);
t:=angle(A,B,C);
if (n>0) {
//triangle(A,B,C);
segment(A,B);
segment(B,C);
B:=similitude(A,k,s*t,B);
C:=similitude(A,k,s*t,C);
spiraler2s(A,B,C,s,n-1);
} else {
triangle(A,B,C);
}
}
Documentation de giac écrite par Renée De Graeve