Rekursiiviset ryhmät
Ryhmien rekursio nin, että ryhmään voi kuulu ryhmiä.
Jotta vältetään Korpin ryhmän aukilaskemisen ongelmat, pidetään ryhmä aina aukilaskettuna ja kun johonkin ryhmään lisätään/poistetaan käydään katsomassa missä kaikissa ryhmissä viitataan tähän ryhmään ja lasketaan sen ryhmän jäsenet uudelleen.
Eli joka ryhmässä on aukilasketut yhdenihmisen ryhmät ja lista laskettavista ryhmistä. Pikkuisen tilaa voi säästään niin, että ryhmässä on tieto siitä, onko siinä viitattuja ryhmiä ja jos ei ole, niin yhden ihmisen ryhmiä ei ole 2x.
Eli tyyliin (* on ryhmä)
ohj2opiskelijat:
syötetyt:
- kalle
- ville
aukilaskettu:
ohj2opettajat
syötetyt:
- vesal
- mikkihiiri
aukilaskettu:
ohj2kurssi:
syötetyt:
- matti
- ohj2opiskelijat*
- ohj2opettajat*
aukilaskettu:
- matti
- kalle
- ville
- vesal
- mikkihiiri
ryhmään kuuluminen katsotaan noista aukilasketuista, paitsi jos se on tyhjä, jolloin syötetyistä. Näin ei-rukursiiviset ryhmät eivät kasva, mutta rekursiisivissa on helposti jäsenet monta kertaa.
Vesa Lappalainen