为什么这个递归python函数返回None?

时间:2014-08-14 19:19:10

标签: python recursion

我不了解递归是如何工作的。基本案例最后运行,但返回值为None。怎么会?

def simpleRecursion(myString) :
    print (myString);
    if len(myString) == 0 :
        # base case
        return "base";
    else : 
        # recursive step
        simpleRecursion(myString[1:])

result = simpleRecursion("abcdefg");
print(result);

2 个答案:

答案 0 :(得分:4)

您必须在else子句中显式返回,否则返回值将丢失:

else: 
    # recursive step
    return simpleRecursion(myString[1:])

答案 1 :(得分:3)

返回None,因为如果参数的长度为0,则只返回一个值,即参数为空字符串。在递归simpleRecursion(myString[1:])中可能会返回一个值,但您从不使用它。因此,simpleRecursion根本不返回值,除非参数是空字符串。将simpleRecursion(myString[1:])替换为return simpleRecursion(myString[1:])以解决此问题。