本地函数调用自身
Local Function Call on itself
学习 python,搜索了这个问题,但很难弄清楚为什么我会出现这种行为。我得到了正确的输出,但我不确定为什么,我只是想知道前进只是为了更好地理解这个概念。让我解释一下:
如果创建一个函数,例如
def function(list):
然后我在列表 x
上调用这个函数
print function(x)
如果我当时像这样用函数本身回忆起这个函数:
def function(list):
function(list)
为什么那个递归调用仍然保留被称为 globablly 的 x 的值?
然后将参数列表中的"list"传递给下一个调用。每个都是 x 的直接副本。它不是全局 x;它是传递下来的变量列表中的本地副本。
请注意,这是无限递归的一个直接示例:无法停止调用自身的函数链。相反,您可能想要
def function(list):
if len(list) == 0:
return "end"
else
return function(list[1:]) + list[0]
递归函数需要终止条件和 return。
学习 python,搜索了这个问题,但很难弄清楚为什么我会出现这种行为。我得到了正确的输出,但我不确定为什么,我只是想知道前进只是为了更好地理解这个概念。让我解释一下:
如果创建一个函数,例如
def function(list):
然后我在列表 x
上调用这个函数print function(x)
如果我当时像这样用函数本身回忆起这个函数:
def function(list):
function(list)
为什么那个递归调用仍然保留被称为 globablly 的 x 的值?
然后将参数列表中的"list"传递给下一个调用。每个都是 x 的直接副本。它不是全局 x;它是传递下来的变量列表中的本地副本。
请注意,这是无限递归的一个直接示例:无法停止调用自身的函数链。相反,您可能想要
def function(list):
if len(list) == 0:
return "end"
else
return function(list[1:]) + list[0]
递归函数需要终止条件和 return。