다음 코드에서 재귀 함수를 만들어 주어진 문자열의 하위 문자열을 찾으려고했습니다.파이썬의 전역 변수와 재귀
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