python中的单行递归循环
我想将此函数重写为常规循环:python中的单行递归循环,python,loops,for-loop,recursion,Python,Loops,For Loop,Recursion,我想将此函数重写为常规循环: def combine(n,k): if k == 0: return [[]] return [pre + [i] for i in range(1, n + 1) for pre in combine(i - 1, k - 1)] 因为我无法调试循环的每个步骤。例如,pre在内部循环中存储什么 这里有一项任务: 给定两个整数n和k,返回1中k个数的所有可能组合。。。n、 此函数的核心是对列表的理解,即建立一个最终返回的隐式列表
def combine(n,k):
if k == 0:
return [[]]
return [pre + [i] for i in range(1, n + 1) for pre in combine(i - 1, k - 1)]
因为我无法调试循环的每个步骤。例如,pre在内部循环中存储什么
这里有一项任务:
给定两个整数n和k,返回1中k个数的所有可能组合。。。n、 此函数的核心是对列表的理解,即建立一个最终返回的隐式列表。我们可以展开函数,删除理解,并使用显式列表:
def combine(n, k):
"""
Given two integers n and k, return all possible
combinations of k numbers out of 1 ... n.
"""
result = []
if k == 0:
result.append([])
else:
for i in range(1, n + 1):
for pre in combine(i - 1, k - 1):
result.append(pre + [i])
return result
print(combine(7, 4))
pre在内部循环中存储什么
pre
变量存储递归的各个元素。例如,为了得到七位数的所有四位数组合,代码使用递归计算所有三位数组合,然后对它们进行增广。递归结果的元素,每个三位数的组合,依次存储在pre
中,您卡在哪里?你尝试了什么?用递增的值来调用它并打印结果?这是一个,在我看来你的缩进是错误的。