Рекурсивная функция не возвращает True или False, но работает правильно и работает?

Вот как формулируется вопрос: Напишите рекурсивную функцию, называемую двойными буквами, с единственным параметром astr, который является строкой. Функция возвращает True, если astr представляет собой строку, содержащую «двойные буквы» (два последовательных вхождения одной и той же буквы), и False в противном случае. Например, двойные буквы («привет») возвращают значение «Истина», тогда как двойные буквы («привет») возвращает значение «Ложь».

-- Не прошу никого делать за меня работу, но вот что у меня есть. Я знаю, что он работает правильно, как если бы я заменил return True на Print («True») и наоборот для False, он напечатает их. Рекурсивные функции плохо работают с логическими значениями или я упускаю что-то очевидное?

def double_letters(astr):
    if len(astr) >= 2:
        if astr[0] == astr[1]:
            return True
        else:
            double_letters(astr[1:])
    else:
        return(False)

person TheMuffinMan834    schedule 01.11.2013    source источник


Ответы (2)


        else:
            return double_letters(astr[1:])

В противном случае вы рекурсивно вызываете свою функцию, но отбрасываете ее возвращаемое значение, и ваша функция фактически возвращает None.

person Matteo Italia    schedule 01.11.2013
comment
Именно так и было, спасибо! Я бы проголосовал за всех вас, но я все еще новичок на этом сайте, еще раз спасибо! - person TheMuffinMan834; 01.11.2013

double_letters(astr[1:])

на линии, само по себе, мало что делает. Вы имели в виду return double_letters(astr[1:])?

person Ry-♦    schedule 01.11.2013