조합 구현 시 매개변수 오류(SWEA 6808)

SWEA 6808. 규영과 인영의 카드게임

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWgv9va6HnkDFAW0

SW 전문가 아카데미

SW 프로그래밍 능력 강화에 도움이 되는 다양한 학습 콘텐츠를 확인하세요!

swexpertacademy.com

카드 케이스의 수에 대한 조합을 실현하는 것입니다.

재귀 함수를 사용했는데, 문제에 필요한 myScore(규영 총점)와 yourScore(인영 총점)를 정적 변수로 끌어오지 않고 파라미터로 전달했습니다.

이 시점에서 yourCards의 번호를 하나씩 선택할 때 다음과 같이 구현되었습니다.


오류를 일으킨 코드

어디에서 문제가 발생했습니까?

myCards(depth) 및 yourCards(i)의 크기에 따라 다음 재귀 호출의 분기가 분할되는 것을 원하지 않았기 때문에 if 문 실행을 사용하기 위해 myScore 및 yourScore를 찾은 후 gameStart를 호출해 보았습니다. 그런데 이렇게 해보니 답을 찾을 수가 없었습니다.

이 방법의 문제점은 myScore와 yourScore가 루프에서 누적되기 때문에 점수를 전달하는 올바른 방법이 아니라는 것입니다.

해결책


결국 지점에 따라 다르게 호출하도록 변경

재귀 함수 호출을 즉시 수행하려면 이전과 같이 다음 호출을 위해 두 개의 변수(myScore next, yourSocre next)를 선언하고 전달해야 합니다. 우리는 이러한 유형의 작업이 상당히 번거로울 것이라고 판단하여 업계에 따라 다르게 명명했습니다.

요약

매개변수를 통해 재귀 호출 값을 전달하면 매개변수에 저장된 값이 변경되면 정적 변수를 사용할 때 복원되지 않는 것과 같은 결과가 발생할 수 있습니다.