在下面的代码中,我试图做一个递归函数来查找给定字符串的子字符串。python中的全局变量和递归
i = 0
j = 0
def substrings(string):
global i, j
if j == len(string) - 1 or len(string) == 0:
return []
elif i == len(string):
j = j + 1
i = j + 1
return [string[j:i]] + substrings(string)
i += 1
return [string[j:i]] + substrings(string)
>>> substrings('ceng')
>>> ['c', 'ce', 'cen', 'ceng', 'e', 'en', 'eng', 'n', 'ng', 'g']
我总是倾向于在使用全局变量的同时使用递归,我不喜欢它。在这种情况下,有什么我不能使用全局变量? 我知道我可以将变量作为参数传递给函数,但它不适用于我,因为该函数应该只有一个参数。
此外,如果有一种方法没有任何变量,我也想学习。
为什么不给子串添加另一个参数?你的陈述感到困惑“必须” – Duniyadnd 2014-12-07 12:55:06
@Diyiyadnd该函数应该只有一个参数,即字符串本身。这只是一个约束。 – user2694307 2014-12-07 12:58:22