递归函数不返回True或False,但正确流动并起作用?

时间:2013-11-01 01:52:15

标签: python string recursion boolean

以下是问题的措辞: 使用单个参数astr编写一个称为双字母的递归函数,它是一个字符串。如果astr是包含“双字母”(两个连续出现的相同字母)的字符串,则functin返回True,否则返回False。例如,双字母(“hello”)返回True,其中双字母(“hi there”)返回False。

- 不要求任何人为我做这项工作,但这就是我所拥有的。我知道它正确地流动,好像我替换返回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)

2 个答案:

答案 0 :(得分:3)

        else:
            return double_letters(astr[1:])

否则你会递归调用你的函数,但你丢弃它的返回值,你的函数实际上会返回None

答案 1 :(得分:2)

double_letters(astr[1:])
就行而言,

本身并没有太大作用。您的意思是return double_letters(astr[1:])吗?