为什么这个递归python函数返回None?
我不理解递归是如何工作的。基本案例最后运行,但返回值为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
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语句,函数都不会返回任何结果。