¿Cuál es el problema más interesante que ha encontrado y que utiliza la recursividad?
El problema que me resultó más interesante al utilizar la recursión fue un error.
El diseñador de Windows Forms en Visual Studio usó la recursividad para evaluar expresiones, y le permitió ingresar texto que es bastante largo en el diseñador para, por ejemplo, un Texto de cuadro de texto, por lo que podría tener algo como esto:
- ¿Cuál es la complejidad computacional de un problema de clasificación? ¿Es P o NP?
- ¿Cómo se puede usar la función zeta de Riemann para generar números pseudoaleatorios?
- ¿Es posible tener una máquina de Turing que sea capaz de construir otra máquina de Turing (diferente) a partir de bits puramente aleatorios?
- Examen de ingreso conjunto (JEE): ¿Quién puede explicar la parte resaltada a continuación?
- ¿De qué manera es mejor transferir valores variables en JavaScript?
textBox1.Text = “algún texto que es bastante largo” +
“y no todo encaja en una línea” +
“se divide en varias líneas”;
El código recursivo en realidad fue enterrado bastante profundo. No solo se permitía agregar cadenas, sino una serie de operaciones diferentes que podrían estar en cadenas o valores numéricos, al menos. (Entonces involucraba +, -, *, / como mínimo. No recuerdo si había otras cosas).
Luego decidieron permitirle usar un botón “…” para especificar un archivo .rtf que contenía el texto de RichTextBox. Si el archivo de texto fuera lo suficientemente largo, desbordaría la pila y bloquearía al diseñador. No voy a afirmar que no fue posible extraer la evaluación de la implementación recursiva, pero habría sido difícil, por lo menos.
Terminé encontrando una longitud de cadena razonable después de la cual es mejor tener el texto como recurso, y solo usar eso en lugar del texto es lo suficientemente largo. Esto lo hizo así que no apilamos el desbordamiento en una cadena larga y loca y mejoramos el rendimiento en una cadena más razonablemente larga.