재귀함수는 자기 자신을 호출하는 함수로써 반복적인 작업을 해야할 때 효율적으로 코드로 풀어낼 수 있다.
arrSum
함수로 배열의 합을 구하는 과정을 생각해보면
배열을 쪼갤수록 문제는 점점 작아질 것이다.
arrSum([1, 2, 3, 4, 5]) === 1 + arrSum([2, 3, 4, 5])
arrSum([2, 3, 4, 5]) === 2 + arrSum([3, 4, 5])
...
이런식으로 과정을 쭉 거치다보면 빈 배열이 나오는 순간이 있을것이다. 빈 배열의 합은 어차피 0이므로 0을 리턴해주면 된다.
이런 단순한 함수에서는 크게 상관은 없지만,
좀 더 복잡한 로직에서, 주의할 점은
이런식으로 에러가 발생하는 경우가 있는데 base case(탈출 조건)를 잘 설정해주는 게 중요하다.
주로 중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측할 수 없을 때 사용한다.
근데 내가 for문 대신에 재귀를 잘 쓸 수 있을까..?
오늘 코플릿에서 재귀 문제를 풀었는데 막판 2개가 어려운..건 아니었는데 생각의 전환이 필요한듯한 문제여서 좀 고생했다..