-
카테고리
-
세부 분야
알고리즘 · 자료구조
-
해결 여부
미해결
바둑이 승차관련 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로 종료가 될수도 있는것 아닌가요??
아니면 제가 이해를 잘못한건지요??
답변을 작성해보세요.
0
김태원
지식공유자2023.02.13
안녕하세요^^
return 문은 재귀 전체를 종료하는게 아니라 sum을 275를 만들며 호출한 함수만 종료합니다. 재귀를 좀더 많이 하다보면 이해가 갈 겁니다.
답변 1