De este trozo de código he probado para diferentes valores de i, j y veo que
n no converge a 1, da para ciertos valores; pero la convergencia debe ser única como la definición de límite en matemáticas. Motivo por el cuál es una llamada recursiva infinita y el motivo del java.lang.StackOverflowError.
Mientrás que:
si da para cualquier valor una convergencia de
n=1.
Revisa entonces la primera llamada recursiva y solucionarás tu problema.