无法理解递归

时间:2014-06-28 19:37:26

标签: python recursion

请有人解释为什么我不能得到True作为答案。我做了最后一次行动,但没有回头。

a= 'abcdefghijklmnopqrstuvwxyz'

def isIn(char, aStr):
    mid_val = len(aStr) / 2
    if char == aStr[mid_val]:
        return True
    elif char < aStr[mid_val]:
        isIn(char, aStr[:mid_val])
    else:
        isIn(char, aStr[mid_val:])


print isIn('w',a)

2 个答案:

答案 0 :(得分:3)

您忘记返回递归函数调用的结果:

...
elif char < aStr[len(aStr)/2]:
    return isIn(char, aStr[0:mid_val])
else:
    return isIn(char, aStr[mid_val::])
...

如果没有此更改,Python将忽略这两个函数调用的返回值,isIn将始终返回None,即函数的默认返回值。

答案 1 :(得分:0)

顺便说一下,你不需要一个功能。

>>> print("a" in "abcdefgh")
True