Un algoritmo recursivo consta de una parte recursiva, una condición de terminación y opcionalmente una parte iterativa. Debe definirse de tal forma que cada llamada reduzca el problema a uno más pequeño y exista una "salida" de la secuencia de llamadas. Ventajas incluyen simplicidad y elegancia, mientras que las desventajas son ineficiencia en tiempo y memoria al requerir transformarlo a un algoritmo iterativo.