Hola Axel, conceptualmente el razonamiento es correcto, pero ese código no va a funcionar.
El problema está en el paso recursivo al usar los operadores ++ y --.
Cuando el operador ++ o -- va después de la variable, primero se evalúa la expresión con el valor inicial y luego se incrementa o decrementa. Cuando el operador ++ o -- precede a la variable (por ejemplo ++x o --x) primero se incrementa la variable y luego se evalúa la expresión.
Para este ejercicio y los próximos que resuelvas, te sugiero que tú mismo hagas un pequeño programa que te permita probar la solución planteada. De esta formas no dependerás de un tercero para saber si lo que hiciste es correcto o no.
Para este caso puntual, te sugiero hacer un programa y luego probar:
- tu solución tal cual está ahora
- cambiar el paso recursivo por EsPalindrom(frase, ++inicio, --fin);
- cambiar el paso recursivo por EsPalindrom(frase, inicio+1, fin-1);