알고리즘:[재귀] arrSum

Kyoorim LEE·2022년 11월 17일
0

알고리즘TIL

목록 보기
22/40

문제

배열을 입력받아 모든 요소의 합을 리턴해야 합니다.

입력

인자 1 : arr

number 타입을 요소로 갖는 배열

출력

number 타입을 리턴해야 합니다.
arr[0] + arr[1] + ... + arr[n-1]
arr.length는 n

주의 사항

함수 arrSum은 재귀함수의 형태로 작성합니다.
반복문(for, while) 사용은 금지됩니다.
입력받은 배열은 함수의 호출 뒤에도 처음 상태를 유지해야 합니다(immutability).
입력으로 들어오는 arr의 모든 요소는 정수 값을 갖는다고 가정합니다.
빈 배열의 합은 0 입니다.

문제풀이

function arrSum(arr) {
  // arrSum([1,2,3,4])
  // arr[0] + arrSum([2,3,4])
  // arr[0] + {arr[0] + arrSum([3,4])}
  // arr[0] + [arr[0] + {arr[0] + arrSum([4])}
  if(arr.length === 0) return 0;
  return arr[0] + arrSum(arr.slice(1));
}

한 줄 평

  • head(arr[0]) 와 tail(head를 제외한 나머지 배열)의 개념으로 접근할 수 있음
  • Recursive case : tail안에서 계속 head와 tail로 쪼개면서 재귀적 접근
  • tail은 arr.slice(1)로 구할 수 있음
profile
oneThing

0개의 댓글