python中的所有子字符串都是通过递归实现的
我试图通过python中的递归找到子字符串列表。但我收到了这样的错误信息-python中的所有子字符串都是通过递归实现的,python,recursion,substring,Python,Recursion,Substring,我试图通过python中的递归找到子字符串列表。但我收到了这样的错误信息- def lst_substrings(s,ans): if len(s) == 0: print(ans) ch=s[0] ros=s[1:] lst_substrings(ros,ans) lst_substrings(ros,ans+ch) s="binod" ans=" " lst_substrings(s,
def lst_substrings(s,ans):
if len(s) == 0:
print(ans)
ch=s[0]
ros=s[1:]
lst_substrings(ros,ans)
lst_substrings(ros,ans+ch)
s="binod"
ans=" "
lst_substrings(s,ans)
回溯(最近一次呼叫最后一次):
文件“”,第12行,在
文件“”,第7行,以lst\u子字符串形式
文件“”,第7行,在lst_子字符串中
文件“”,第7行,在lst_子字符串中
[上一行重复了2次]
文件“”,第4行,在lst_子字符串中
索引器错误:字符串索引超出范围
同样的逻辑获取cpp中的结果。我想通过这种方法。有人能帮我修改代码吗?我不知道预期的返回是什么,但是错误是由函数从不返回这一事实引起的,因此添加返回将修复
索引器
编辑最好将ans结果附加到单独的列表中,如下所示
Traceback (most recent call last):
File "<string>", line 12, in <module>
File "<string>", line 7, in lst_substrings
File "<string>", line 7, in lst_substrings
File "<string>", line 7, in lst_substrings
[Previous line repeated 2 more times]
File "<string>", line 4, in lst_substrings
IndexError: string index out of range
一般来说,应该将渲染(打印)与计算结果分开。这将使函数更简单,并且避免在不属于该函数的全局列表上使用副作用
result = []
def lst_substrings(s, ans):
if len(s) == 0:
print(ans)
result.append(ans)
return
ch = s[0]
ros = s[1:]
lst_substrings(ros, ans)
lst_substrings(ros, ans + ch)
s = "binod"
ans = " "
lst_substrings(s, ans)
for item in result:
print(item)
输入字符串“aabc”的预期输出是什么?请向我们展示一些示例输入和预期输出。这是否回答了您的问题?当字符串长度为0时,
lst_子字符串
应返回,以便跳过ch=s[0]
。请提供字符串的示例输出。对于函数本身,需要更好地考虑基本情况
和递归情况
。
# computing (as a generator)
def getSubStrings(S):
for i in range(1,len(S)): yield S[:i]
if S: yield from getSubStrings(S[1:])
# rendering (i.e. printing results)
for ss in getSubStrings(s):print(ss)
b
bi
bin
bino
i
in
ino
n
no
o