Python 递归什么时候停止

Python 递归什么时候停止,python,python-3.x,recursion,Python,Python 3.x,Recursion,为了停止递归,我们必须提供一个基。除了提供基础之外,递归何时停止。当它不再呼叫自己时,它会停止吗 def func(x): n=[] for i in n: func(x) 在这里,它是调用函数还是什么都不做。递归是否会在这样的场景中停止并开始回溯?代码中的第四行不会执行,因为列表n不包含任何元素。因此,func将在不执行任何递归的情况下终止。由于n为空,因此for循环将不做任何操作,func将在不执行任何递归的情况下终止。此函数不会有任何递归,因为n是一个空列

为了停止递归,我们必须提供一个基。除了提供基础之外,递归何时停止。当它不再呼叫自己时,它会停止吗

def func(x):
    n=[]
    for i in n:
        func(x)

在这里,它是调用函数还是什么都不做。递归是否会在这样的场景中停止并开始回溯?

代码中的第四行不会执行,因为列表n不包含任何元素。因此,
func
将在不执行任何递归的情况下终止。

由于
n
为空,因此
for
循环将不做任何操作,
func
将在不执行任何递归的情况下终止。

此函数不会有任何递归,因为n是一个空列表;您永远不会进入for循环。因此,在任何递归函数中,如果列表变为空,它不会再次执行自身并开始调用以前堆叠的函数?在深度优先搜索中,叶节点不包含子节点,因此邻接列表变为空。这就是它开始回溯到以前节点的原因吗?是的,如果你的函数包含一个列表,如果它变为空,那么条件将变为false,递归将停止。这取决于你的基本情况。如果函数在列表中没有元素时终止,则递归将停止def func(x):n=[4]对于n:func(x)``中的i,这里只展示一个无限递归的例子,非常感谢。我是递归中的noob。因此,在任何递归函数中,如果列表变为空,它不会再次执行自己,并开始调用以前堆叠的函数?。在深度优先搜索中,叶节点不包含子节点,因此邻接列表变为空。这就是它开始回溯到以前节点的原因吗?在内部,递归是基于堆栈而不是dfs工作的。后续函数调用追加到堆栈顶部,当到达函数的基本大小写时,它将值返回给调用它的函数。这样,第一个函数调用将出现在堆栈的底部,并给出最终结果。@SurajSubramanian。是的,我正在使用递归方法研究DFS。叶节点的邻接列表为空。我想澄清递归何时停止的疑问。我读到当它到达基本情况时,它停止并将值返回到堆栈中的前一个函数。