Hola. No sé si con el mensaje anterior alcanzó. Como supongo que el atención va a pasar a los siguientes temas del curso vamos a tratar de redondear este ejercicio.
Creamos una función que generaliza la anterior. Vamos a llamarla expRec. Obviamente x y tol siguen siendo parámetros a los que agregamos i, que identifica el término. Evaluamos el término i-ésimo,llamémosle evalTermino. Con esa evaluación sabemos si estamos en el caso base o no.
float expRec( x, tol, i)
evalTermino = x^i / i!
si evalTermino > tol
resultado = evalTermino + expRec(x, tol, i + 1)
en otro caso
resultado = evalTermino
return resultado
Y así sería la versión más simple.
Teniendo en cuenta el subhilo que inició Martín se podría hacer más eficiente el cálculo de evalTermino. Para eso ese valor se pasa como parámetro en la llamada recursiva. La evaluación del nuevo término sería evalTermino = evalTermino * x / i.
Finalmente para agregar la cantidad de términos evaluados se agrega el parámetro cantidad pasado por referencia, como en la función original. Esa cantidad se conoce al llegar al caso base, y es igual a 1 + identificador del término, i. O sea que en el caso base se asigna cantidad = 1 + i.
¿Quedan dudas?