在下面的代码中,我尝试使用递归函数来查找给定字符串的子字符串。在
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']
在处理递归时,我总是倾向于使用全局变量,而且我一点也不喜欢。在这种情况下,我能不能不使用全局变量? 我知道我可以将变量作为参数传递给函数,但这对我不起作用,因为函数应该只有一个参数。在
另外,如果有一种方法可以在没有任何变量的情况下做到这一点,我也想学习一下。在
如果不想向函数中添加任何参数,可以在其中包含第二个函数:
像这样的事情是一种选择吗?在
你不必给一个参数,但你可以。^^在
没有递归和全局变量的相同函数:
对于递归,您可能需要一些函数的内部状态,这些状态必须通过可选参数进行传输。当然,您可以仅使用返回列表的长度来计算两个for循环变量},但这将是一个神秘的,不太可读。在
i
和{相关问题 更多 >
编程相关推荐