You failed to return numbers
in your guard condition. So it just skips past that and calls itself recursively with the same argument.
When you get a stack level too deep on a recursive call that usually means you have a recursive case that winds up making the same call. I debug those by adding a print at the start of the recursive call. Once I see the call that is leading to calling itself, I walk through what happens for that case very carefully.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…