如何修改递归求解N取K组合的Python代码,将输出转为字符串列表
你可以按如下方式修改代码,核心是新增结果列表存储所有组合字符串,替换原有的逐行打印逻辑:
修改后完整代码
def k_size_subsets(n, k): list1 = [i for i in range(1, n + 1)] data = [0] * k res = [] # 新增结果存储列表 help_fun(n, k, data, list1, 0, 0, res) return res def help_fun(n, k, data, list1, index, i, res): if index == k: # 替换原有打印逻辑,将组合转字符串加入结果列表 res.append(''.join(map(str, data))) return if i >= n: return data[index] = list1[i] help_fun(n, k, data, list1, index + 1, i + 1, res) help_fun(n, k, data, list1, index, i + 1, res) # 测试调用 print(k_size_subsets(5, 3))
核心修改点
- 主函数
k_size_subsets中初始化空列表res用于存储结果,递归执行完成后直接返回该列表 - 为辅助函数
help_fun新增res参数传递结果列表,移除原有的打印专用函数more_help - 调用
k_size_subsets(5,3)即可直接得到你需要的["123","124","125","134","135","145","234","235","245","345"]格式结果
内容的提问来源于stack exchange,提问作者OldFashion12213
相关产品推荐
相关产品推荐

