Ero sivun ”Rekursio” versioiden välillä

[katsottu versio][katsottu versio]
Poistettu sisältö Lisätty sisältö
Ipr1 (keskustelu | muokkaukset)
Ipr1 (keskustelu | muokkaukset)
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.