이전 글에 작성된 재귀 함수는 단일 단독 함수(Single standalone function)이었다. 함수 내에서 자신을 직접 호출하는 방식이었다.

그러나 Helper Method Recursion는 두 개의 함수가 있다. 재귀적이지 않은 외부 함수가 재귀 함수인 내부 함수를 호출하는 패턴이다.

function outer(input) {
	var outerScopeVariable = [];
  
  function helper(helperInput) {
  	helper(helperInput--)
  }
  helper(input);

  return outerScopeVariable;
}

외부 함수(outer)와 재귀 함수(helper)가 있다. 재귀 함수는 이전 방식과 마찬가지로 자기자신을 호출한다.

이 방식은 배열 등을 다룰 때 유용하다.

+) 순수 재귀

이중 함수를 사용하지 않고, 배열을 다루는 방법에는 Pure Recursion이 있다.

function collectOddValues(arr) {
  let newArr = [];
  
  if(arr.length === 0) {
  	return newArr;
  }
  
  if(arr[0] % 2 !== 0) {
  	newArr.push(arr[0]);
  }
  
  newArr = newArr.concat(collectOddValues(arr.slice(1)));
  
  return newArr;
}
collectOddValues([1,2,3,4,5,6]);

이 방법을 사용할 떄는, 배열을 변경시키지 않는 내장 메서드(slice, 전개 연산자 등)를 사용할 수 있다.

0개의 댓글