递归代码返回None

时间:2014-03-10 21:13:59

标签: python recursion return nonetype

我真的不明白,为什么代码

def isIn(char, aStr): 
    ms = len(aStr)/2
    if aStr[ms] == char:
        print 'i am here now'
        return True
    elif char>aStr[ms] and not ms == len(aStr)-1:
        aStr = aStr[ms+1:]
    elif char <aStr[ms] and not ms == 0:
        aStr = aStr[0:ms]
    else:
        return False
    isIn(char, aStr)

print isIn('a', 'ab')

继续返回None。它打印'我现在在这里',但它不会返回True,就像下一行所说的那样。为什么呢?

1 个答案:

答案 0 :(得分:6)

您最后一行可能需要return

return isIn(char, aStr)

如果没有它,该函数只会在None终止时返回,而不会看到return