python - Python:递归函数。如何返回targetsum的所有子集
问题描述
我的代码没有显示最短子集,例如 [7] 或者它没有读取所有子集 [7]、[3,4] 以返回最短子集。可以解释为什么只返回一组结果以及我应该如何修改它以显示所有子集?谢谢
我想遵循的代码图像如下
def howsum(targetsum,numbers,combo=None):
if combo == None:
combo = list()
if targetsum == 0: return [ ]
if targetsum < 0: return None
shortcombo = None
for number in numbers:
remainder = targetsum - number
combo = howsum(remainder,numbers,combo)
if combo != None:
combo.append(number)
if shortcombo == None or len(shortcombo) > len(combo):
shortcombo = combo
return shortcombo
return shortcombo
print(howsum(7,[4,3,7]))
解决方案
我不确定这一点,但是在 python 中定义一个函数并给出 2 组代码时,在调用函数时它实际上并没有执行第二组代码。我在其他项目中遇到了同样的问题。我没有得到答案,只是说我在代码中做错了!!!
推荐阅读
- azure - 用自定义名称替换 kubernetes 中的 IP 地址
- python - 根据日期列删除行 [Pandas]
- python - 将 pandas 数据框转换为嵌套 json
- python - 工厂模式中的烧瓶无法通过启动应用程序在现有数据库中找到用户表
- java - 有没有办法提取 Mapstruct 映射?
- python - 如何在 Python 或 R 中将 TAR 文件解压缩为 TXT(读取 CEL 文件)
- typescript - 修复 TS2688:在 node_modules 中找不到类型定义文件
- javascript - 确定哪些检查失败
- kubernetes - 从 OOMKilled pod 重叠 kubelet 的 container_memory_rss 指标
- azure - Azure 数据工厂:将管道从一个数据工厂迁移到另一个数据工厂