파이썬, 재귀를 이용한 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) #여기서 예상한 정상출력이 아니라 재귀함수 돌렸을때 최종값으로만 들어갑니다..
  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)