Sto lavorando ad un algoritmo di gioco da tavolo in cui un grande albero viene attraversato usando la ricorsione, tuttavia, non si comporta come previsto. Come gestisco questo e quali sono le tue esperienze con queste situazioni?Consigli pratici per il debug della ricorsione profonda?
Per peggiorare le cose, utilizza la potatura alfa-beta, il che significa che non vengono mai visitate intere parti dell'albero, e che semplicemente interrompe la ricorsione quando vengono soddisfatte determinate condizioni. Non riesco a modificare la profondità di ricerca in un numero inferiore, perché mentre è deterministico, il risultato varia a seconda della profondità della ricerca e può comportarsi come previsto a una profondità di ricerca inferiore (e lo fa).
Ora, non ti chiederò "dov'è il problema nel mio codice?" ma sto cercando suggerimenti generali, strumenti, visualizzazioni, qualsiasi cosa per il codice di debug come questo. Personalmente, sto sviluppando in C#, ma tutti gli strumenti sono ben accetti. Anche se penso che questo possa essere più applicabile alle lingue imperative.
Beh, un test unitario a questo punto mi dirà semplicemente che non funziona, che già conosco: p – JulianR
Permette di lavorare con il problema in modo più controllato, ho anche modificato con alcuni dettagli suggerimenti. – krosenvold
e non solo, quando si utilizza un test di unità, in genere è possibile riprodurre problemi con uno spazio di problemi molto più semplice, forse solo una profondità di 2. Anche se la registrazione sembra essere la soluzione preferita in questo thread, non è una soluzione molto buona - la registrazione non conserva molte informazioni utili per il futuro. Quando la copertura del test è buona, la copertura del registro generalmente diminuisce drasticamente. – krosenvold