【问题标题】:printing only equal a's and b's recursively in python在python中递归打印只等于a和b
【发布时间】:2022-01-04 22:57:32
【问题描述】:

我想知道如何使用递归打印等量的 a 和 b 字符串,例如: 如果输入为“4”,则输出为 aabb abab bbaa、baba、baab 和 abba。

这是我目前所拥有的:

def ab_equal(length, current):
    if length == 0:
        print(current)
    else:
        k = -1
        ab_equal(length - 1, current + "a")
        ab_equal(length - 1, current + "b")


if __name__ == "__main__":
    print(ab_equal(4, " "))

【问题讨论】:

  • 请不要破坏您的帖子。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本,因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?

标签: python string recursion equals


【解决方案1】:

类似的东西会起作用:

def ab_equal(length, current=""):

    if len(current) == length:
        if current.count("a") == current.count("b"):
            print(current)
    else:
        ab_equal(length, current + "a")
        ab_equal(length, current + "b")


ab_equal(4)
aabb
abab
abba
baab
baba
bbaa

由于我们不必返回(并且只打印)您可以在最后打印出调用堆栈。

【讨论】:

    【解决方案2】:

    一种方法是计算 a 和 b:

    def ab_equal(length, current, a=None, b=None):
        if a is None:
            a = b = length // 2
        if length == 0:
            print(current)
        else:
            if a:
                ab_equal(length - 1, current + "a", a - 1, b)
            if b:
                ab_equal(length - 1, current + "b", a, b - 1)
    
    
    if __name__ == "__main__":
        ab_equal(4, "")
    
    aabb
    abab
    abba
    baab
    baba
    bbaa
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-24
      • 1970-01-01
      • 2010-12-08
      • 2021-11-19
      • 1970-01-01
      • 2021-09-10
      • 2012-07-23
      • 1970-01-01
      相关资源
      最近更新 更多