Рекурсивный подсчет пар - PullRequest
0 голосов
/ 30 августа 2018

Напишите рекурсивную функцию countpairs, имеющую параметр «s», строку. Функция будет посчитать количество пар повторяющихся символов в строке. Пары персонажей не могут пересекаться, например «Ааа» считается одной парой «а», за которой следует один «а». Вызовите модуль, содержащий вашу функцию «pair_mod.py».

1 Ответ

0 голосов
/ 09 сентября 2018

Поскольку прошло уже больше недели, я собираюсь предположить, что это домашнее задание уже наступило, и дать полный ответ безопасно. Давайте сделаем это без уродливых числовых индексов, используя распаковку Python 3:

def countpairs(string):
    if string:
        first, *second_on = string

        if second_on:
            second, *third_on = second_on

            if first == second:
                return 1 + countpairs(third_on)

            return countpairs(second_on)  # outdent a level and still works!  Work out why.

    return 0

for word in ['', 'I', 'oo', 'aaa', 'zzzz', 'bookkeeper']:
    print(word, ":", countpairs(word))

OUTPUT

> python3 test.py
 : 0
I : 0
oo : 1
aaa : 1
zzzz : 2
bookkeeper : 3
> 
...