下面的代码返回“ None”,但是,当我将(返回总和)更改为(返回打印(总和))时,它将返回正确的值。为什么会出现此问题?
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)
return语句丢失!
做这个:
def good(num,sum):
if num == 0:
return sum
sum = sum + num
num = num - 1
return good(num, sum)
这是因为调用了该函数,但没有递归地返回新值。
最好且深入地解释此问题的最佳网站之一是realpython.com,尤其要关注:maintain-state,但我建议您阅读全文。
为了完整起见,我引用一个与您遇到的问题有关的部分:
在幕后,每个递归调用都会向调用堆栈添加一个堆栈框架(包含其执行上下文),直到我们到达基本情况为止。然后,随着每个调用返回其结果,堆栈开始展开。
在处理递归函数时,请记住,每个递归调用都有其自己的执行上下文。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句