python - 我的 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']))
仅对于此输入,它不会返回任何内容。我已经使用记忆来优化。有人能看吗?
解决方案
这里:
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
而且您不必提高递归限制。那只是使识别您的错误变得更加困难。
推荐阅读
- ios - 安装两个具有相同目标名称的应用时,Face ID 出现错误 -1004
- javascript - RouterActiveLink 不适用于 ng-template 中的 routerLink
- java - Timeout Exception while sorting bigger List
- react-native - 如何将应用程序的状态从活动更改为后台?
- uwp - UWP Telerik RadDataGrid expands with page but doesn't shrink
- asp.net - 将 ASP.Net C# 网站托管到 Apache 或 weblogic
- unit-testing - enable_testing() 在 cmake 中做了什么?
- html - Should html header tag only contain info common to all pages
- android - Android
在 HTML.fromHTML 之后打印 - c# - C# - Load data infile to mysql - fatal error