В следующем коде я попытался сделать рекурсивную функцию для поиска подстрок заданной строки.Глобальные переменные и рекурсия в 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
@Duniyadnd Предполагается, что в функции должен быть только один параметр, то есть сама строка. Это просто ограничение. – user2694307