首页 > 解决方案 > 我的 python 代码没有返回值。请查看代码

问题描述

所以我写了代码来查找是否可以从列表中构造一个特定的单词。如果是,则返回真,否则返回假。但是对于特定值,它不会在终端上返回任何内容。下面是代码。

import sys
  
  
sys.setrecursionlimit(10**6)
  


#CanConstruct
def canConstruct(s, ls,memo={}):

    if(s in memo.keys()):
        return memo[s]
    if(s==''):
        return True
    for i in ls:
        if(s[0]==i[0]):


            if(canConstruct(s.replace(i,''),ls)):
                memo[s] = True
                return True

    memo[s] = False
    return False


print(canConstruct('eeeeeeeeeef',['e','ee','eee','eeee','eeeee']))
        

仅对于此输入,它不会返回任何内容。我已经使用记忆来优化。有人能看吗?

标签: python

解决方案


这里:

if(canConstruct(s.replace(i,''),ls))

如果s.replace(i,'')与 相同s,则您有无限递归。

您可以通过将其更改为:

if i in s and canConstruct(s.replace(i,''),ls):

更改后,我得到:

>>> canConstruct('eeeeeeeeeef',['e','ee','eee','eeee','eeeee'])
False

而且您不必提高递归限制。那只是使识别您的错误变得更加困难。


推荐阅读