我不了解递归是如何工作的。基本案例最后运行,但返回值为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);
答案 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:])
以解决此问题。