A veces esto no se puede evitar. La razón viene en tres partes:
- Hay algunos problemas que requieren una gran profundidad de recursión.
- En cada uno de los sistemas operativos populares, la configuración predeterminada incluye un límite de tamaño de pila bastante estricto.
- Los autores de algunos jueces en línea no tienen la experiencia suficiente para eliminar este límite.
Con respecto al ítem 1, el ejemplo notorio aquí es una búsqueda en profundidad en un gráfico (o cualquiera de sus aplicaciones, por ejemplo, descomposición en componentes biconéctados). Su profundidad de recursión puede ser lineal en la cantidad de vértices, y no hay forma de evitarla. Si su pila no es lo suficientemente grande, debe escribir una versión no recursiva, y eso es todo.
Con respecto al ítem 2, en general esto es algo bueno. El número de casos en que un programador necesita una gran pila es insignificante en comparación con el número de casos en que un programa con errores intenta comer toda la memoria al hacer una llamada recursiva en un ciclo infinito. El límite de tamaño de la pila evita que dicho programa consuma toda la memoria disponible y bloquee el sistema operativo.
- 1,000 participantes toman un examen que consta de 100 preguntas y 5 opciones por pregunta. ¿Cuál es el mejor enfoque (algoritmo) para encontrar todos los pares posibles de participantes con al menos un 80% de coincidencia en las opciones que eligieron?
- ¿Por qué hay una diferencia de complejidad de tiempo entre los algoritmos de clasificación en Java cuando estoy usando Integer e integer?
- ¿Debería seleccionar siempre el algoritmo con el menor orden de complejidad?
- ¿Cuál es la diferencia entre recursividad e iteraciones brevemente?
- ¿Cómo se explica el algoritmo de Metropolis-Hastings en términos simples?
Con respecto al artículo 3, esto es algo muy malo. El límite de tamaño de la pila no trae más que molestia a las competiciones algorítmicas; y no es necesario tenerlo, ya que de todos modos existe un límite de memoria global.
Afortunadamente, el límite de tamaño de la pila en las competencias de programación es sobre todo una cosa del pasado. Hoy en día, cualquier organizador de concursos decente ya debe ser consciente de este problema y asegurarse de que se haya eliminado el límite. No conozco ningún concurso de programación importante que aún tenga el límite predeterminado de pila pequeña. Y si alguna vez participas en un concurso que aún contiene esta molestia, ilumina a sus organizadores para que desaparezca go