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

为什么这个递归python函数返回None?,python,recursion,Python,Recursion,我不理解递归是如何工作的。基本案例最后运行,但返回值为None。为什么 def simpleRecursion(myString) : print (myString); if len(myString) == 0 : # base case return "base"; else : # recursive step simpleRecursion(myString[1:]) result = simp

我不理解递归是如何工作的。基本案例最后运行,但返回值为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);

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

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

它返回None,因为只有当参数的长度为0(即参数为空字符串)时才返回值。在递归中,simpleRecursionmyString[1:]可能返回一个值,但您从未使用过它。因此,SimpleCursion根本不返回值,除非参数是空字符串。将simpleRecursionmyString[1:]替换为return simpleRecursionmyString[1:]以修复此问题。

您实际上没有在else子句中返回。两个答案都没有明确说明这一点,因此,如果您不知道:无论何时,如果您在函数末尾没有命中return语句,函数都不会返回任何结果。