gpt4 book ai didi

python - python中的简单列表递归

转载 作者:太空宇宙 更新时间:2023-11-03 17:11:53 25 4
gpt4 key购买 nike

我试图理解递归的概念,并对以下代码的输出有以下疑问:

def subsetsofSet(input_list, set_list=None):
print "IN input_list: {0}".format(input_list)
if not input_list:
return

input_list.pop()

subsetsofSet(input_list)
print "RETURN input_list: {0}".format(input_list)

subsetsofSet([1,2,3])

输出如下:

IN input_list: [1, 2, 3]
IN input_list: [1, 2]
IN input_list: [1]
IN input_list: []
RETURN input_list: []
RETURN input_list: []
RETURN input_list: []

为什么RETURN input_list总是空的?难道不应该以IN input_list相反的方式显示吗?感谢您对理解这一点的任何帮助吗?

最佳答案

列表是一个可变元素,因此您只需传递对原始列表的引用,并且它会在每次调用时弹出。如果打印列表的 id,您可以看到相同的值。

因此,即使第二次调用 subsetsofSet(input_list) 之前,返回后列表是 [1,2]空。

如果您不希望递归调用更改列表,则应该传递列表的副本:

def subsetsofSet(input_list, set_list=None):
print "IN input_list: {0}".format(input_list)
if not input_list:
return

input_list.pop()

subsetsofSet(input_list[:])
print "RETURN input_list: {0}".format(input_list)

subsetsofSet([1,2,3])

输出为:

IN input_list: [1, 2, 3]
IN input_list: [1, 2]
IN input_list: [1]
IN input_list: []
RETURN input_list: []
RETURN input_list: [1]
RETURN input_list: [1, 2]

关于python - python中的简单列表递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33993149/

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