Python 如何正确地使用3个变量构建递归?

Python 如何正确地使用3个变量构建递归?,python,algorithm,recursion,Python,Algorithm,Recursion,我正在尝试破解递归的工作原理。我已经看过简单递归的工作原理,但现在我正在解决这个问题,我需要考虑3个变量。 听起来像: 任务 生成具有给定数量的0、1和2的所有字符串,并以 词典顺序 输入格式:3个非负值,即a+b+C您必须做两件事: 确定基本情况。这就是递归应该结束的时候 在这种情况下,所有输入都是0 找出如何减少基本情况的其他输入 在这里,首先查找以0开头的所有字符串(按字典顺序,使用递归),并在其开头添加一个0。在递归调用中,必须将零的计数减少1。之后,对1和2执行相同的操作,收集所有结果

我正在尝试破解递归的工作原理。我已经看过简单递归的工作原理,但现在我正在解决这个问题,我需要考虑3个变量。 听起来像:

任务 生成具有给定数量的0、1和2的所有字符串,并以 词典顺序


输入格式:3个非负值,即a+b+C您必须做两件事:

  • 确定基本情况。这就是递归应该结束的时候
  • 在这种情况下,所有输入都是0

  • 找出如何减少基本情况的其他输入
  • 在这里,首先查找以0开头的所有字符串(按字典顺序,使用递归),并在其开头添加一个0。在递归调用中,必须将零的计数减少1。之后,对1和2执行相同的操作,收集所有结果并返回它们

    代码如下:

    pastebin.com/GNNCN1Uf
    

    请澄清这个问题,因为这里的排列比示例1多得多。shows@user508402,抱歉,但我不太明白这个问题。我在练习中添加了一些formate信息,但您能澄清一下您的意思吗?如果您在浏览器中搜索“生成所有置换递归”,您会发现可以更好地解释这一点的参考资料,而我们无法在此处进行管理。还要学习递归教程,注意“基本情况”和“递归情况”。。。在这里申请。
    input: 0 0 0
    output:
    
    def foo(a, b, c):
        if c > 0:
            prev = foo(a, b, c - 1)
        if b > 0:
            prev = foo(a, b - 1, c)
        if a == 0:
            return ['']
        prev = foo(a - 1, b, c)
        result = []
        for p in prev:
            result.append(p + '0')
            result.append(p + '1')
            result.append(p + '2')
        return result
    print(foo(1, 1, 1))
    
    pastebin.com/GNNCN1Uf