재귀(Recursion)

Rudy·2022년 11월 29일
0

재귀 함수란?

내부적으로 자기 자신을 호출하는 함수를 재귀함수라고 한다. 반드시 종료 조건이 필요하다는 특징을 가지고 있다. 재귀 호출(자신을 호출)을 너무 많이 하게 되면 스택 메모리 영역에 너무 많은 공간을 할당하게 되어 스택 오버플로가 발생할 수 있다는 점을 주의해야 한다. 그래서 재귀 함수를 구현할 때는 최악의 경우 얼마나 많은 재귀 호출이 발생하는 지 잘 살펴보아야 한다. 또한 재귀 함수에 대한 이해도가 높으면 코드의 가독성이 좋아질 수 있으나, 개념을 모르는 사람이 보면 코드를 이해하기 어렵다는 단점이 있다.

function sumRange(num){
	if(num===1) return 1;
  	return num + sumRange(num-1);
 }
sumRange(3)  = 5

/// factorial 반복문

function factorial(num){
	let total =1;
  	for(let i = num; i>0; i--){
    	total *= i ;
    }
  	return total;
}
//Helper 메소드 재귀

function collectOddValues(arr){
  
  let result = [];
  function helper(helperInput){
    if(helperInput.length === 0){
      return;
    }
    // 홀수 인지 짝수 인지 확인
     if(helperInput[0] % 2 !== 0){
       // 2 로 나누기 0 아니면 홀수 
       // 결과 result push 사용해서 값을 추가해준다
           // console.log(result,"result")
          result.push(helperInput[0])
    }
    console.log(helperInput.slice(1),"perInput")
    // 무한 반복을 위해 slice 사용해 하나씩 제거 한다
    helper(helperInput.slice(1))
   }
    helper(arr)
    return result;
}

collectOddValues([1,2,3,4,5,6,7,8,9])
profile
주니어 개발자

0개의 댓글