Creo que tambien pueden hacer así:
// str, strlen(str)
int palindromo1(char palabra[], int length)
{
if (length <= 0)
return true;
else
return palabra[0] == palabra[length - 1]
&& palindromo1(&palabra[0] + 1, length - 2);
}
// str, strlen(str)
int palindromo2(char palabra[], int length)
{
for (int i = 0; i < length / 2; ++i)
{
if (palabra[i] != palabra[length - 1 - i])
return false;
}
return true;
}
// C++
int palindromo3(const std::string& nice)
{
std::string::const_iterator first = nice.begin();
std::string::const_reverse_iterator second = nice.rbegin();
return std::equal(first, first + nice.size() / 2, second);
}
Hice dos en C y uno en C++