递归计数对

时间:2018-08-30 10:38:58

标签: python recursion python-3.6

编写一个称为countpairs的递归函数,该函数具有一个参数“ s”(字符串)。该功能将 计算字符串中重复字符对的数量。 成对的字符不能重叠,例如“ aaa”指的是一对“ a”,然后是单个“ a”。 调用包含函数“ pairs_mod.py”的模块。

1 个答案:

答案 0 :(得分:1)

由于已经过去了一个星期,所以我假设这项作业已经到期,可以安全地提供完整的答案。通过使用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))

输出

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