在下面的代碼中,我試圖做一個遞歸函數來查找給定字符串的子字符串。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