La partie importante est la première ligne :java.lang.StackOverflowError
. La récursivité est exigeante en pile.
Essayez de ne faire que la partie algorithme de manière récursive, tout en plaçant l'accès à la base de données dans une méthode supplémentaire.