2016-03-20 7 views
-2

Я не могу видеть, где я здесь не так, его работа для некоторых палиндромов, но не для других.Функция палиндрома с использованием рекурсии

В основном программа принимает слово, длину слова и затем возвращает, если это палиндром или не является палиндром, а функция должна использовать рекурсию.

bool palindrome(char a[],int length){ 
int start = *a; 
if (*a != a[length-1]) 
    return false; 

if (*a == a[length-1]||start<length) 
    return true; 

else 
    return palindrome(a+1,length-1); 

return false; 
} 

У любого человека проблемы с этой функцией?

+1

Try [объясняющую каждую строку вашего кода в резиновой уткой] (https://en.wikipedia.org/wiki/Rubber_duck_debugging). Это очень короткая часть кода, она не должна занимать много времени. Я буду держать пари, что ваша резиновая утка выяснит проблему. Черт, моя резиновая утка нашла проблему через пять секунд. –

+0

ха-ха, я чувствую, что это что-то глупое, плохо получить мою резиновую утку сейчас – owen95

ответ

0

Моя утка говорит, что вы очень близки. Он говорит, что вам нужно забыть о том, что вы пытались сделать с start, и что каждая рекурсия уменьшает длину на 2, а не 1 (потому что первый символ сопряжен с его совпадением, последним символом). Потом он показал мне это:

bool palindrome(const char* a, int length) { 
    if(length < 2) return true; 
    if(a[0] != a[length-1]) return false; 
    return palindrome(a+1, length - 2); 
} 
+0

Я сам ее там! глупая ошибка, скажи спасибо своей даке! – owen95

+0

Он ответил «Крюк!» –

Смежные вопросы