## Recursieve procedures

Als er veel turtles hun omgeving wit maken door er overheen te lopen, is de achtergrond snel in zijn geheel wit geworden.
Maar als er maar één turtle is, duurt het erg lang.
Je zou daarom willen dat de patch de boodschap kon door geven aan de patches om hem heen.
Dat kan door het toepassen van een recursieve procedure.

Een recursieve procedure voert een commando uit en roept dan zichzelf aan.

Een voorbeeld is de procedure create-offspring.
Met deze procedure laten we een turtle jongen krijgen (to hatch betekent uitbroeden).

to create-offspring let number-of-turtles count turtles if number-of-turtles < 50 [ hatch 10 [set color green] ] end

Als je deze procedure aanroept in de setup-turtles procedure, en je begint met één poppetje, dan zullen dat er snel 11 zijn.
Hiervan zijn zeker 10 turtles groen.

Nu gaan we de procedure recursief maken.
Dan doen we door een soort sneeuwbaleffect te creëren: de procedure roept zichzelf aan, totdat het aantal turtles gelijk aan, of meer dan 50 is.

to create-offspring let number-of-turtles count turtles if number-of-turtles < 50 [ hatch 10 [set color green] create-offspring ] end

Recursieve procedures zijn riskant.
Als je namelijk geen goede stopconditie formuleert, komt er geen einde aan de aanroep.
In create-offspring is de stopconditie het totaal aantal turtles.
Die wordt berekend door count.

Na het uitvoeren van het programma zie je in de monitor hieronder dat het er in totaal 51 turtles zijn.
Hiervan is één turtle niet groen maar heeft een andere kleur.