Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python “为什么递归函数返回”;无”;_Python - Fatal编程技术网

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

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):

下面的代码返回“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):

    if num == 0:
        return sum
    sum = sum + num
    num = num - 1
    return good(num, sum)
这是因为调用了函数,但没有递归返回新值

最好的网站之一是realpython.com,看一看:但是我建议你看一看整篇文章

为了完整起见,我引用了我认为与您遇到的问题相关的一节:

在幕后,每个递归调用都会向调用堆栈添加一个堆栈帧(包含其执行上下文),直到到达基本情况。然后,当每个调用返回其结果时,堆栈开始展开

  • 放松:基本上它会向后返回
处理递归函数时,请记住每个递归调用都有自己的执行上下文。

其他与堆栈溢出相关的问题

递归案例没有返回语句。尝试在函数的最后一行中返回good(num,sum)。