Используйте следующий код:
bool isPalindrome(char *str, int startIndex, int endIndex)
{
if ( startIndex >= endIndex)
return true;
if (str[startIndex] != str[endIndex])
return false;
return isPalindrome(str, ++startIndex , --endIndex);
}
int main()
{
char *str = "civic";
if (isPalindrome(str , 0, strlen(str)-1))
printf("YES\n");
else
printf("No\n");
}
Некоторые моменты для рассмотрения
- символьные массивы используются для строки в C.
- Массивы в C имеют начальный индекс из 0
- Массивы в C endIndex равен размер - 1 .
Другие улучшения возможны, хотя они очень незначительны:
- Имеют returnType рекурсивной функции в качестве логического значения (меньше памяти).
- Есть более четкие имена длячлены данных.
Пример:
char string[]={'c,'i','v','i','c'}; //size=5
// indexes: 0 1 2 3 4