¿Cuál es el problema más interesante que ha encontrado y que utiliza la recursividad?

¿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:

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.

Analizador de SQL.

El código más hermoso que he escrito. A pesar de que la implementación fue una mierda.

El funcionamiento interno del código se basó en el comportamiento de los lenguajes libres de contexto y las reglas de sustitución, y algunas teorías sobre mónadas. Sin embargo, como está escrito en Java, no pude usar las campanas y campanillas de Haskell, por lo que la mayoría de mi analizador terminó siendo inicializado en un bloque constructor estático.

Oh bien. Todavía estoy orgulloso de eso.

Además, es parte de una cadena de herramientas que traduce el código SQL en un diagrama EER.

Épico.

More Interesting

Sea m una máquina de turing y sea w una corriente de entrada de m. ¿Cómo puedo definir el tiempo de ejecución tm (w) de m en la entrada w?

¿Por qué la mayoría de las universidades enfatizan la teoría en oposición a las aplicaciones del mundo real y las habilidades prácticas para los estudiantes?

¿Por qué las matemáticas son mucho más difíciles que la programación?

¿Cuál es la longitud esperada de la subsecuencia creciente más larga?

¿Qué significa T (n) en relación con O (n)?

Cómo resolver sumas consecutivas de UVa 12355

¿Qué es un diagrama de máquina de Turing y cómo diseño uno?

Cómo calcular (la 11ma potencia 10) / (la 10ma potencia 10) sin usar una calculadora

Dado un conjunto de n rectángulos alineados en el eje en el plano, ¿qué tan grande es el subconjunto más grande de estos rectángulos que contienen un punto común en O (n ^ 3) y luego en el orden O (nlogn)?

¿Cómo puedo ordenar rápidamente una matriz de elementos que ya está ordenada, excepto por un pequeño número de elementos, por ejemplo, hasta 1/4 del total, cuyas posiciones se conocen, por ejemplo, 1,2,3,4,8,6 , 7,8,2,10,11,3,13,14,15,16. Este conjunto se ordena guardar 4,8,11?

¿Qué se entiende por una sólida formación en matemáticas?

¿Cuáles son las aplicaciones de las matemáticas en la programación?

¿Un algoritmo 'clásico' de Shor esencialmente destruiría el interés en las computadoras cuánticas?

¿Cuál es la diferencia entre datos continuos y discretos?

Si a, b, c son números reales tales que 0 <a <1, 0 <b <1, 0 <c <1, a + b + c = 2, ¿cómo demuestra que [matemáticas] \ frac {a} {1 - a} \ frac {b} {1 - b} \ frac {c} {1 - c} \ geq 8 [/ math]?