suivant: Pour définir une fonction
monter: Les instructions de programmation
précédent: Pour faire une boucle
Table des matières
Index
Une procédure récursive est une procédure qui s'appelle elle-même mais
avec des paramètres différents et comporte un test d'arrêt qui permet d'interrompre cet appel.
On tape :
polygo(n,p,a):={
if (p!=0){
avance(a);
tourne_gauche(360/n);
polygo(n,p-1,a);
}
}
Ou on tape en utilisant si...alors...fsi au lieu de if...{...} :
polygo(n,p,a):={
si (p!=0) alors
avance(a);
tourne_gauche(360/n);
polygo(n,p-1,a);
fsi;
}
Ou on tape une procédure non récursive en utilisant repete :
polygo(n,p,a):=repete(p,avance(a),tourne_gauche(360/n))
Puis on tape :
polygo(6,4,20)
On obtient :
Les 4 cotés d'un hexagone de côtés 20
On veut faire une suite de n triangles équilatèraux : le premier a pour
côtés a, le deuxième a pour sommet les milieux des cotés du premier
triangle etc ...
On suppose que la tortue a comme position de départ :
un sommet du premier triangle et est dirigée selon un coté et que
les triangles sont situés sur sa droite (si vous choisissez les triangles
sont situés sur sa gauche, il suffira de changer les tourne_droite en
tourne_gauche et vice-versa). On choisit la même position comme
position d'arrivée.
Voici deux procédures récursives.
On dessine le premier triangle, puis on place la tortue à l'endroit où il
faut être pour faire l'appel récursif, on fait l'appel récursif,
et on ramene la tortue à sa position de départ.
On tape par exemple :
tria(n,a):={
if (n!=0){
repete(3,avance(a),tourne_droite(120));
avance(a/2);
tourne_droite(60);
tria(n-1,a/2);
tourne_gauche(60);
avance(-a/2);
}
}
Ou on commence à dessiner le début du premier triangle, puis on place la
tortue à l'endroit où il faut être pour faire l'appel récursif, on
fait l'appel récursif, puis on finit de dessiner le premier triangle et on
ramene la tortue à sa position de départ.
On tape :
tria(n,a):={
if (n!=0){
avance(a/2);
tourne_droite(60);
tria(n-1,a/2);
tourne_gauche(60);
avance(a/2);
tourne_droite(120);
repete(2,avance(a),tourne_droite(120));}}
Puis on tape :
tria(5,100)
On obtient :
5 triangles équilatèraux, le deuxième triangle a pour sommet les milieux des cotés du premier triangle etc ...
suivant: Pour définir une fonction
monter: Les instructions de programmation
précédent: Pour faire une boucle
Table des matières
Index
Documentation de giac écrite par Renée De Graeve