Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中的单行递归循环_Python_Loops_For Loop_Recursion - Fatal编程技术网

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

中,您卡在哪里?你尝试了什么?用递增的值来调用它并打印结果?这是一个,在我看来你的缩进是错误的。