为什么python的递归函数中存在内存错误?

问题描述

我写了一段代码,在 python 中使用递归来获取字符串的所有子序列。下面是代码。

def solve(s):

    if (len(s)==0):
        return [""]
    curr = s[0]
    res = s[1:]
    ans = solve(res)
    for i in ans:
        ans.append(curr+i)
    return ans
if __name__=="__main__":
    s=str(input())
    print(solve(s))

对于input="ab",上面的代码抛出内存错误

我不知道为什么会这样。

将代码更改为以下代码后,它起作用了。

def solve(s):

    if (len(s)==0):
        return [""]
    curr = s[0]
    res = s[1:]
    ans = solve(res)
    new = []
    for i in ans:
        new.append(i)
        new.append(curr+i)

    return new

if __name__=="__main__":
    s=str(input())
    print(solve(s))

谁能解释一下第一个代码中内存错误背后的原因是什么? 提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)