On peut décider d'avoir le dessin récursif seulement dans l'écran
DispG : le programme est plus simple car toutes les instructions
graphiques sont exécutées dans cet écran.
On appelle cette procédure triang(a,d,f) où a est l'affixe
du sommet en bas à gauche du grand triangle, d est la longueur de
son côté et f donne la longueur du côté du plus petit triangle.
triang(a,d,f) renvoie 1 pour que l'on puisse vérifier que la
procédure s'est bien exécutée.
On tape :
triang(a,d,f):={ si d>=f alors triangle_equilateral(a,a+d); triang(a,d/2,f); triang(a+d/4+i*d*sqrt(3.)/4,d/2,f); triang(a+d/2,d/2,f); fsi; retourne 1; }:;On tape : triang(0,40,2)
triangles(a,d,f):={ local L; si d<f alors retourne NULL fsi; L:=triangle_equilateral(a,a+d),triangles(a,d/2,f), triangles(a+d/4+i*d*sqrt(3.)/4,d/2,f),triangles(a+d/2,d/2,f); retourne L; } :;On tape : triangles(0,40,2)
On peut aussi choisir comme paramètre la profondeur n du dessin récursif au lieu de f. On tape :
trianglen(a,d,n):={ local L; si n<0 alors retourne NULL fsi; L:=triangle_equilateral(a,a+d),trianglen(a,d/2,n-1), trianglen(a+d/4+i*d*sqrt(3.)/4,d/2,n-1),trianglen(a+d/2,d/2,n-1); retourne L; } :;On tape : trianglen(0,40,4)