Я хочу написать функцию Python, которая возвращает true, строка s является палиндром, то есть равна его обратному. Например, «гоночный автомобиль» и «абба» - это палиндромы. Пока это моя неудачная попытка.Рекурсивная функция не может вернуть boolean
def ispalindrome(s):
if len(s) == 1:
return s
else:
reverse = s[-1] + ispalindrome(s[:-1])
У меня нет никаких проблем, когда я сказать функцию, чтобы вернуть обратное, однако, я запутался, как я должен сделать сравнение с тем, чтобы вернуть логическое значение.
def ispalindrome(s):
if len(s) == 1:
return s
else:
reverse = s[-1] + ispalindrome(s[:-1])
return a == reverse
с помощью функции выше создает следующую ошибку
>>>ispalindrome('racecar')
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
ispalindrome('racecar')
File "/Users/Nadir/Desktop/Untitled.py", line 24, in ispalindrome
reverse = s[-1] + ispalindrome(s[:-1])
File "/Users/Nadir/Desktop/Untitled.py", line 24, in ispalindrome
reverse = s[-1] + ispalindrome(s[:-1])
File "/Users/Nadir/Desktop/Untitled.py", line 24, in ispalindrome
reverse = s[-1] + ispalindrome(s[:-1])
File "/Users/Nadir/Desktop/Untitled.py", line 24, in ispalindrome
reverse = s[-1] + ispalindrome(s[:-1])
File "/Users/Nadir/Desktop/Untitled.py", line 24, in ispalindrome
reverse = s[-1] + ispalindrome(s[:-1])
TypeError: Can't convert 'bool' object to str implicitly
Теперь я полностью понимаю, почему ошибка выше получается. Это связано с тем, что некоторые из рекурсивных функций возвращают bool и пытаются добавить его в строку; но я не могу это сделать, как избежать этой ошибки.
Почему бы просто не проверить первый и последний персонажи и отрубить их перед рекурсией? –
Я мог бы, но я ищу способ, которым я могу использовать созданное «обратное». – TheValars