Python “为什么递归函数返回”;无”;
下面的代码返回“None” 但是,当我将(返回金额)更改为(返回 print(sum))返回正确的值。 为什么会出现这个问题Python “为什么递归函数返回”;无”;,python,Python,下面的代码返回“None” 但是,当我将(返回金额)更改为(返回 print(sum))返回正确的值。 为什么会出现这个问题 def good(num,sum): if num == 0: return sum sum = sum + num num = num - 1 good(num,sum) sum = 0 a = 3 k = good(a,sum) print(k) 返回语句丢失 这样做: def good(num,sum):
def good(num,sum):
if num == 0:
return sum
sum = sum + num
num = num - 1
good(num,sum)
sum = 0
a = 3
k = good(a,sum)
print(k)
返回语句丢失 这样做:
def good(num,sum):
if num == 0:
return sum
sum = sum + num
num = num - 1
return good(num, sum)
这是因为调用了函数,但没有递归返回新值
最好的网站之一是realpython.com,看一看:但是我建议你看一看整篇文章
为了完整起见,我引用了我认为与您遇到的问题相关的一节:
在幕后,每个递归调用都会向调用堆栈添加一个堆栈帧(包含其执行上下文),直到到达基本情况。然后,当每个调用返回其结果时,堆栈开始展开
- 放松:基本上它会向后返回