为什么递归函数返回“无”

编码chobo

下面的代码返回“ 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)
费德里科·鲍(FedericoBaù)

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

递归函数返回“无”

为什么此函数返回“无”?

为什么熊猫应用函数返回无

为什么递归函数返回意外结果?

为什么我的递归函数返回None?

无法弄清楚为什么函数返回“无”

为什么我的递归函数返回未定义?

为什么此递归javascript函数返回undefined?

为什么我的递归dfs函数返回错误的值?

为什么递归函数在返回时取最新值?

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

为什么此递归函数返回正确的值?

为什么递归函数“无限”循环返回相同的数字

为什么此递归函数返回未定义?

为什么此递归javascript函数返回其作用?

为什么这个递归函数返回错误的值?

为什么我的递归函数返回“未定义”?

为什么我的递归函数返回 None 值

为什么 Python 返回“无”

为什么递归函数在返回数组上返回未定义?

为什么要返回一个函数而不是再次运行该函数(递归)?

试图理解为什么函数在递归函数中返回 undefined

递归函数完成后返回0。为什么“返回0”不覆盖该函数的先前返回值?

为什么为无符号整数复制C的fread的泛型函数总是返回零?

为什么打印功能返回无?

为什么当我递归调用函数时,我的函数不返回以前的值,而不返回新的值?

为什么函数在递归随机数中返回None?

为什么我的递归JavaScript函数不返回字符串?

为什么返回值在我的递归函数中变得未定义?