Estoy trabajando en un algoritmo de juego de mesa en el que un árbol grande se atraviesa mediante recursión, sin embargo, no se comporta como se esperaba. ¿Cómo manejo esto y qué experimentas con estas situaciones?Consejos prácticos para depurar la recurrencia profunda?
Para empeorar las cosas, usa la poda alfa-beta, lo que significa que nunca se visitan partes completas del árbol, y simplemente detiene la recursión cuando se cumplen ciertas condiciones. Tampoco puedo cambiar la profundidad de búsqueda a un número inferior porque, aunque es determinista, el resultado varía según la profundidad de búsqueda y puede comportarse como se espera a una profundidad de búsqueda más baja (y lo hace).
Ahora, no voy a preguntarte "¿dónde está el problema en mi código?" pero estoy buscando consejos generales, herramientas, visualizaciones, cualquier cosa para depurar código como este. Personalmente, estoy desarrollando C#, pero todas y cada una de las herramientas son bienvenidas. Aunque creo que esto puede ser más aplicable a los idiomas imperativos.
Bueno, una prueba unitaria en este momento me diría que no funciona, que ya sé: p – JulianR
Le permite trabajar con el problema de una manera más controlada, también edité con algunos detalles más sugerencias. – krosenvold
y no solo eso, cuando se utiliza una prueba unitaria, generalmente se pueden reproducir problemas con un espacio problemático mucho más simple, tal vez solo una profundidad de 2. Aunque el registro parece ser la solución preferida en este hilo, no es una solución muy buena. el registro no retiene mucha información útil para el futuro. Cuando la cobertura de su prueba es buena, la cobertura de registro normalmente baja drásticamente. – krosenvold