【问题标题】:Python library function to re-apply a function to its own output until output remains unchanged?Python库函数将函数重新应用于自己的输出直到输出保持不变?
【发布时间】:2019-07-18 03:13:00
【问题描述】:

某些算法最好通过重复将函数应用于其自己的输出来执行。

在我的示例中,它正在删除匹配的字母对。

例如,如果您有字符串,ztWqqWtUU:

remove_pairs('tWqqWtUU') -> 'ztWWt'
remove_pairs('ztWWt') -> 'z'
remove_pairs('z') -> 'z'

显然,这可以在循环中编码,记下“最后一个值”并检查它是否已更改。但是有没有图书馆可以为我做这件事?

【问题讨论】:

  • 我认为您正在寻找的术语是 recursion。你不需要一些 3rd 方库来做到这一点。
  • 这听起来像是通过保留一堆不匹配的字母来更好地实现。尝试通过在循环中应用部分解决方案来完成此操作,最终会在 'ab'*100000 + 'ba'*100000 等输入上产生二次运行时间。
  • 此外,即使使用重复应用方法,循环似乎也比递归调用更好。它会更快、更简单,并且突破递归限制的风险更小。
  • 此外,由于垃圾邮件问题,Stack Overflow 上不允许提出图书馆推荐问题。

标签: python


【解决方案1】:

你可以这样做:

def remove_all_pairs(string):
    new_string = remove_pairs(string)
    if new_string == string:
        return new_string
    else:
        return remove_all_pairs(new_string)

这将为您提供所需的递归。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-25
    • 2020-05-06
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 2018-05-31
    • 1970-01-01
    相关资源
    最近更新 更多