Programuojant rekursinis iškvietimas yra paprogramėje arba funkcijoje esanti komanda, kuri nurodo programai vėl paleisti tą pačią paprogramę. Pakartotinis veikimas gali būti tiesioginis funkcijos rezultatas arba gali būti suaktyvinta antra funkcija, kuri savo ruožtu nurodo pirmąją funkciją. Rekursyvus iškvietimas turi tam tikrų panašumų su baisiu begaliniu ciklu, tačiau paprogramė visada turi sąlyginį sakinį, nurodantį programai, kada nustoti kartoti rekursiją.
Rekursijos sąvoka turbūt geriausiai iliustruojama naudojant pavyzdį. Tarkime, stogdengis namui deda naujas vantas. Norėdami pradėti, jis turi ant stogo neštis čerpių ryšulį. Prikalęs pirmąjį ryšulį į vietą, jis turi lipti žemyn kopėčiomis, paimti kitą ryšulį ir prikalti jį į vietą. Procesas tęsiasi kaip „eik, paimk, grąžink“ serija, kol bus uždėta paskutinė juostinė pūslelinė. Tuo metu stogdengys gali laisvai pereiti prie kito darbo arba grįžti namo.
Nors pavyzdys yra pernelyg supaprastintas, jame yra visi rekursinio skambučio elementai. Yra atspirties taškas, stogdengis turi susigrąžinti tai, ko jam reikia, grįžti į pradžią ir, įvykdžius galutinę sąlygą, sustoti. Tai iš esmės daro programa; jis pradeda, įgyvendina veiksmą, grįžta į save ir baigiasi, kai įvyksta pabaigos sąlyga.
Pabaigos sąlyga vadinama baziniu atveju. Tai būtina visiems rekursiniams skambučiams; be jo funkcija ir toliau kartotųsi. Geriausiu atveju dėl to išeikvojami sistemos atminties ištekliai. Paprastai dėl perkrovos programa tam tikru momentu sugenda, tačiau aptikus problemą gali būti padaryta didelė žala.
Patyrę programuotojai gali atpažinti panašumą tarp rekursinio skambučio ir „for“ arba „while“ ciklo. Pavyzdžiui, jei tikslas yra rasti bendrą atsargų skaičių visų atsargų, kurių dalių numeriai yra didesni nei 999, kilpa „for“ nurodo programai rasti visus tinkamus atvejus, o ciklas „while“ nurodo programai vykdyti ciklą. tik kol galioja nurodyta sąlyga. Galima sakyti, kad rekursyvus skambutis sujungia kai kurias šių kilpų ypatybes su teiginiu „jei-tada-else“; jei ši sąlyga teisinga, darykite tai arba atlikite ką nors kitaip, jei sąlyga klaidinga. Tačiau rekursija paprastai leidžia naudoti kompaktiškesnį kodą ir leidžia problemą perduoti funkcijai, esančiai arčiau reikalingo taško.