Recientemente he visto en un par de lugares diferentes comentarios como: "Aprendí acerca de la recursividad en la escuela, pero nunca la he usado o sentido la necesidad desde entonces. " (La recursión parece ser un ejemplo popular de "aprendizaje de libros" entre un cierto grupo de programadores).Usos "necesarios" de la recursividad en idiomas imperativos
Bueno, es cierto que en lenguajes imperativos como Java y Ruby [1], generalmente utilizamos iteración y evitamos la recursión, en parte debido al riesgo de desbordamientos de pila, y en parte porque es el estilo al que la mayoría de los programadores en esos idiomas están acostumbrados.
Ahora sé que, estrictamente hablando, no hay usos "necesarios" de la recursividad en dichos idiomas: siempre se puede reemplazar de alguna manera la recursión con iteración, sin importar cuán complejas sean las cosas. Por "necesario" aquí, estoy hablando de lo siguiente:
¿Puede pensar en algún ejemplo particular de código en dichos idiomas donde la recursión era mucho mejor que la iteración (por motivos de claridad, eficiencia u otra) que Usaste recursividad de todos modos, y convertir a iteración hubiera sido una gran pérdida.
Recursively walking trees ha sido mencionado varias veces en las respuestas: ¿qué fue exactamente sobre su uso particular que hizo que la recursión fuera mejor que usar un iterador definido por la biblioteca, si hubiera estado disponible?
[1]: Sí, sé que estos también son lenguajes orientados a objetos. Sin embargo, eso no es directamente relevante para esta pregunta.
El cuerpo del mensaje 'donde la recursión era mucho mejor que la iteración' sugiere que usted sabe que el título es cuestionable: no hay * usos * necesarios de la recursión. – AakashM
De hecho, el título no es perfecto: acabo de actualizar la pregunta para demostrar que lo entiendo. Puse un poco de pensamiento en esto, y no pude encontrar una palabra mejor que capte adecuadamente el espíritu de la pregunta. Siéntase libre de sugerir uno. –
La recursividad lleva a la gente a stackoverflow ... –