gpt4 book ai didi

python - 尝试使用递归方法生成字符串的子集

转载 作者:太空宇宙 更新时间:2023-11-04 08:26:36 25 4
gpt4 key购买 nike

尝试在 python 中使用递归实现算法。看起来缺少一些我无法调试的东西。

我的方法是有两个递归分支,并在每次递归时传递一个元素。详情如下:

## input pattern : "ab"
## output pattern : ["", "a", "b", "ab"]

此模式的递归树如下所示

#           "ab" [ROOT]
# |
# -a +a
# | |
# -b +b -b +b
# => "" "b" "a" "ab"

我现有的代码如下:它没有按预期工作。

def gen_subset(slist):
def helper(slist,i,temp,out):
if len(slist) == i:
out.append(temp)
return()
else:
helper(slist,i+1,temp,out)
temp.append(slist[i])
helper(slist,i+1,temp,out)

out = []
helper(slist,0,[],out)
return out

s = "ab"
print (gen_subset([c for c in s]))

这段代码产生了错误的结果。

输出

[['b', 'a', 'b'], ['b', 'a', 'b'], ['b', 'a', 'b'], ['b', 'a', 'b']]

我在这里遗漏了什么吗?

最佳答案

temp.append(slist[i]) 更改为 temp = temp + [slist[i]]

这是因为 temp.append() 就地修改了 temp 变量。
相反,我们需要将 temp 的副本传递给下一个递归调用。

关于python - 尝试使用递归方法生成字符串的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56407464/

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