파이썬으로 3으로 채워진 리스트를 주면 그 비트 만큼의 이진수를 표현해주는 코드를 짜려고 하는데요(예를 들어 [3,3,3,3]을 넣으면 모든 가능한 4비트 2진수를 표현하는 방식)
현재 짠 코드가
def binaryComb(placeList, current, finalList):
if current == len(placeList):
finalList.append(placeList)
else:
if placeList[current] == 3:
placeList[current] = 0
binaryComb(placeList, current + 1, finalList)
placeList[current] = 1
binaryComb(placeList, current + 1, finalList)
placeList[current] = 3
return finalList
이렇습니다. 꼭 recursion을 써서 하고 싶은데 일단 현재 append가 있는 곳에서 append 대신 프린트 function을 쓰면 모든 이진수가 나오기는 하는데요, append를 해서 마지막에 리턴받은 값으로 프린트를 하면 16개의 [3,3,3,3]이 나옵니다. 갯수는 맞는데 정작 리스트에는 3밖에 없어요 ㅠㅠ
마지막 placeList[current] = 3 때문인거 까지는 확인했는데 왜 그런건지, 어떻게 고쳐야 finalList가 모든 이진수 값을 저장한 값이 나오는 건지 알 수가 없습니다. 혹시 도와주실분 안계시나요?