shinbian11   3년 전

30번째 줄의 c[i]=false; 를 주석처리하고 실행을 하면 최초의 한줄 만 출력이 되고, 다시 주석을 없애야 정답이 되는데,

왜 그런건가요? 재귀함수를 아직 정확히 이해를 못했습니다.. 재귀함수가 return 된 다음의 순서?? 같은걸 모르겠어요..

왜 재귀함수 밑에 저 문장을 적어주는 건가요? 인터넷에 나와있는 재귀함수 리턴에 관한 자료를 읽어도 잘 이해가 안되네요.

djm03178   3년 전

재귀 함수를 재귀라고 생각하지 말고, 그냥 어떤 문제를 해결해주는 평범한 다른 함수를 호출하는 거라고 생각해 봅시다. 그러면 25~30번째 줄의 의미는 현재 i번째가 선택되지 않은 경우 그걸 선택해보고 어떤 문제를 해결한 뒤에, 다시 원래의 상태(=i가 선택되지 않은 상태)로 되돌리는 것입니다.

여기서 그 함수가 재귀라는 사실을 적용해도 달라질 것이 없습니다. 재귀 함수를 호출하는 것과 다른 함수를 호출하는 것은 근본적으로 차이가 없기 때문입니다. 내가 지금까지 선택한 상태로부터 시작해서, index+1번부터 마저 선택해보도록 하는 것이 그 함수 호출의 역할입니다. 재귀 호출된 함수가 어떤 과정을 거쳐 리턴을 하고 이런 것은 전혀 신경쓸 필요가 없습니다.

shinbian11   3년 전

감사합니다. 너무 복잡하게 생각했나보네요

댓글을 작성하려면 로그인해야 합니다.