• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

바둑이 승차관련 sum>c return으로 조건을 돌면 최대값을 찾기 전에 프로그램이 종료되는건 아닌가요??

23.02.07 19:24 작성 23.02.07 19:25 수정 조회수 184

0

        <script>
            function solution(c, arr){
                let answer=Number.MIN_SAFE_INTEGER;
                let n=arr.length;
                function DFS(L, sum){
                    if(sum>c) return;
                    if(L===n){
                        answer=Math.max(answer, sum);
                    }
                    else{
                        DFS(L+1, sum+arr[L]);
                        DFS(L+1, sum);
                    }                  
                }
                DFS(0, 0);
                return answer;
            }

            let arr=[81, 58, 42, 33, 61];
            console.log(solution(259, arr));
        </script>

아직 재귀에 대한 이해가 짧아 잘 모르겠습니다.

답은 242인데,

만약 sum의 값이 181이었고 다음에 나온 sum의 값이

275라고 한다면

sum>259일때 return으로 함수가 종료되고

최대값인 242를 찾지 못하고 181로 종료가 될수도 있는것 아닌가요??

아니면 제가 이해를 잘못한건지요??

 

답변 1

답변을 작성해보세요.

0

안녕하세요^^

return 문은 재귀 전체를 종료하는게 아니라 sum을 275를 만들며 호출한 함수만 종료합니다. 재귀를 좀더 많이 하다보면 이해가 갈 겁니다.