파이썬, 재귀를 이용한 comb 결과값 리스트에 넣기 오류..
조회수 885회
뭔가 재귀함수에 대한 이해가 부족해서 벌어지는 상황인거 같은데 해결이 안됩니다 ㅠ
재귀함수 이용해서 nCr 결과값을 리스트에 추가하려하는데
간단하게 4c2 이면 결과값 1,2 /1,3 /1,4/ 2,3 /2,4/3,4 를 특정리스트에 넣는겁니다
r==0 상황에서 print(result)를 하면 정상적으로 츨력되는데
fianl.append(result)를 사용해 final에 넣으면 final에는 재귀함수 최종값으로만 다 들어가버립니다.. 전역변수 취급해서도 해보고 이것저것 다해봤는데 해결이 안되네요 왜그런지 알려주실수 있으신가요
r==0 상황에서 result가 일단 한번 나오면 그자체를 final에 넣어야 되는데 재귀함수 다돌고 마지막 result값을 final에 때려 넣는거 같습니다 왜그럴까요
웹페이지에서 실행하니까 n=int(input('n:')) 이게 동작을 안하는거 같은데 왜그러죠;;
n=int(input('n:'))
r=n//2
# 그냥 간략히 nC(n/2) 상황만 구합니다
li=[x+1 for x in range(n)] #1~n까지의 리스트 생성
result=[0]*r # 각각의 결과값
final=[] # 결과값들을 집어넣고 싶은 최종 리스트
def comb(n,r):
if r==0:
final.append(result)
return
elif n<r:
return
else:
result[r-1]=li[n-1]
comb(n-1,r-1)
comb(n-1,r)
comb(n,r)
print(final) #여기서 예상한 정상출력이 아니라 재귀함수 돌렸을때 최종값으로만 들어갑니다..
-
(•́ ✖ •̀)
알 수 없는 사용자
댓글 입력