Rekursio
Aliohjelma voi kutsua myös itseään. Tehdään aluksi aliohjelma, joka piirtää ympyrän. Aliohjelmaan välitetään ympyrän keskipiste ja säde, jonka jälkeen ohjelma piirtää ympyrän ikkunan keskelle.
Ohjelma tulostaa nyt yhden ympyrän. Ympyrän keskipiste on (200, 200) ja säde on 200.

Lisätään aliohjelmaan kutsu, joka kutsuu itseään. Jotta ohjelma ei joudu ikuiseen silmukkaan, niin lisätään ohjelmaan laskuri, jonka avulla voimme määrätä kutsujen määrän.

Koska aliohjelman kutsussa on r*0.9, kutsuttavan ympyrän säde kutistuu 10 % eli menee 0,9-kertaiseksi. Laskuri pitää huolen siitä, että piirrettäviä ympyröitä on 100 kappaletta. Jos laskuria ei olisi, niin todennäköisesti ohjelma joutuisi ikuiseen silmukkaan ja ohjelman suoritustilan jumittumiseen.
|
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
void setup() {
size(400, 400); // Ikkunan koko
background(255); // Taustaväri valkoinen
noFill(); // Ei täyttöä
noLoop(); // Pääohjelma toisetaan vain kerran
}
void draw() {
ympyra(200,200,200); // Kutsutaan aliohjelmaa
}
void ympyra(float x, float y, float r) {
ellipse(x, y, r*2, r*2);
}
Ohjelma tulostaa nyt yhden ympyrän. Ympyrän keskipiste on (200, 200) ja säde on 200.

Lisätään aliohjelmaan kutsu, joka kutsuu itseään. Jotta ohjelma ei joudu ikuiseen silmukkaan, niin lisätään ohjelmaan laskuri, jonka avulla voimme määrätä kutsujen määrän.
|
// Ohjelman tehnyt e-Oppi Oy
// 30.8.2017
int a = 1;
void setup() {
size(400, 400); // Ikkunan koko
background(255); // Taustaväri valkea
noFill(); // Ei täyttöä
noLoop(); // Ei toistoa
}
void draw() {
ympyra(200, 200, 200);
}
void ympyra(float x, float y, float r) {
a++;
ellipse(x, y, r*2, r*2);
if (a <= 100) { // Sata toistoa
ympyra(x, y,r*0.9); // Aliohjelma kutsuu itseään
}
}

Koska aliohjelman kutsussa on r*0.9, kutsuttavan ympyrän säde kutistuu 10 % eli menee 0,9-kertaiseksi. Laskuri pitää huolen siitä, että piirrettäviä ympyröitä on 100 kappaletta. Jos laskuria ei olisi, niin todennäköisesti ohjelma joutuisi ikuiseen silmukkaan ja ohjelman suoritustilan jumittumiseen.