gpt4 book ai didi

python - 如何在递归函数中存储值?

转载 作者:行者123 更新时间:2023-12-01 01:15:40 25 4
gpt4 key购买 nike

假设您有以下递归函数。假设节点参数是头:

def to_string(node):
a_str = ""

if node.next != None:
a_str += str(node.val)
to_string(node.next)
else:
return a_str

我想记录所有节点的值。该代码能够获取这些值,因为它正在使用下一个节点 to_string(node.next) 调用自身,但它无法存储这些值并返回正确的字符串,因为 a_str 每次调用时都会重新初始化。是否有函数内解决方案,或者我必须依赖全局变量?

最佳答案

在一种情况下您没有返回值。如果编写得当,您的函数应该如下所示:

def to_string(node):
a_str = str(node.val)
if node.next != None:
a_str += to_string(node.next)
return a_str

字符串是不可变的,因此您不需要初始化为当前节点以外的任何内容。

为了回答有关如何以Python方式在递归函数中存储内容的问题:您可以使用嵌套函数。嵌套函数可以在主函数作用域中使用非局部变量来模拟全局变量,而不会泄漏任何内容:

def to_string(node):
def actual_recursive(node):
nonlocal a_str
a_str += str(node.val)
if node.next != None:
actual_recursive(node.next)
a_str = ''
actual_recursive(node)
return a_str

nonlocal 关键字很像 global,但它允许您修改紧邻函数作用域的值。

关于python - 如何在递归函数中存储值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54376656/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com