Hola otra vez:
No sabía que era para cosas "académicas", así que te diré un par de cosillas a considerar...
Si te fijas en la función, hay dos parámetros que pueden ser cualquier cosa (javascript lo permite)... como se invoca desde un texto (input type=
text ), es conveniente convertirlo a número para operar (parseInt), pero lo que devuelve es una cadena (primer caso) o un número (segundo caso)...
Asímismo en la recursión se pasa el primero de los parámetros como un número...
Para convertir una cadena a un número está parseInt, y en el otro sentido, no sé si hay algo específico, en pcasiones he hecho algo así...
var cadena = "" + n; // donde n es un número...
Espero que te sirva
Saludos