On a donc
zk = = a*rk-1exp(i(k - 1)/3)exp(i
/3) = = a exp(i
/3)zk-1
On peut faire soit un programme itératif, soit un programme récursif.
On tape pour le programme itératif :
segmenti(a,z0,p):={ local L,k; point(z0); L:=NULL; pour k de 1 jusque p faire L:=L,segment(z0,a*z0*exp(i*pi/3)); z0:=a*z0*exp(i*pi/3); fpour; retourne L; } :;Pour le programme récursif : 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 renvoie 1 pour que l'on puisse vérifier que la procédure s'est bien exécutée.
segmentg(a,z0,p):={ point(z0); si p>0 alors segment(z0,a*z0*exp(i*pi/3)); segmentg(a,a*z0*exp(i*pi/3),p-1); fsi; retourne 1; } :;Ou bien on met les différentes instructions graphiques à réaliser dans une liste L.
segmentr(a,z0,p):={ local L; si p==0 alors retourne point(z0); fsi; L:=segment(z0,a*z0*exp(i*pi/3)),segmentr(a,a*z0*exp(i*pi/3),p-1); retourne L; } :;Puis on tape :