Uma sub-rotina, escrita numa linguagem de programação, que chama a si mesma, direta ou indiretamente, é dita

O uso de

geralmente permite uma descrição mais clara e concisa dos algoritmos, especialmente quando o problema tem esta característica por natureza, como é o caso

, por exemplo. Um compilador implementa este tipo de sub-rotina por meio de uma

, na qual são armazenados os dados usados em cada chamada da sub-rotina que ainda não terminou de processar.
As lacunas são correta e, respectivamente, preenchidas por: