Ero sivun ”Rekursio” versioiden välillä
[katsottu versio] | [katsottu versio] |
Poistettu sisältö Lisätty sisältö
Rivi 20:
return n * factorial(n-1)
Yleinen ohjelmointivirhe on niin sanottu [[ikuinen silmukka]], jossa funktiokutsu ei koskaan palaa vaan etenee yhä toistuvasti saman funktion kautta rekursiivisesti kiertäen. [[Pino]] on välttämätön rekursiivisten aliohjelmien toteuttamiseen, mutta pinolla on myös rajattu koko: useissa ohjelmointikielissä rajaamaton rekursio voi aiheuttaa pinon ylivuodon ({{k-en|stack overflow}}). Rekursio voi olla hitaampaa ja vaatia enemmän muistia kuin [[toistorakenne|toistorakenteen]] käyttö.<ref>{{Verkkoviite | osoite = https://www.ibm.com/developerworks/websphere/techjournal/1307_col_paskin/1307_col_paskin.html | nimeke = Looping versus recursion for improved application performance | julkaisija = IBM | julkaistu = 17.7.2013 | viitattu = 4.11.2017}}</ref>
Mikäli ohjelmakoodin rekursiivinen osa on niin sanottu [[häntärekursio]], voidaan rekursio muuttaa tavalliseksi silmukaksi.
|