뭉지야 2023. 2. 13. 20:55
728x90

# 재귀함수
-자기자신을 호출하는 함수
- 잘 활용하면 반복적인 작업을 해야하는 문제를 좀더 간결한 코드로 풀어낼수있다.
-모든 재귀함수는 반복문으로 표현할수있다. 그러나 재귀를 적용할수있는 대부분의 경우에는 재귀를 적용한 코드가 더욱 간결하고 이해하기 쉽다.

1.문제를 좀 더 작게 쪼갠다.
2.문제가 더는 작아지지 않을때까지 가장 작은 단위로 문제를 쪼갠다.
3. 가장 작은 단위의 문제를 풂으로써 전체 문제를 해결한다.

#언제 사용하는게 좋을까?
-주어진 문제를 비슷한 구조의 더 작은 문제로 나눌수있는경우
-중첩된 반복문이 많거나 반복문의 중첩 횟수를 예측하기 어려운 경우

 

function recursive(input1, input2, ...) {
  // base case : 문제를 더 이상 쪼갤 수 없는 경우 
  // => base case: 재귀의기초, 재귀의 탈출조건(멈추는조건)
  if (문제를 더 이상 쪼갤 수 없을 경우) {
    return 단순한 문제의 해답;
  }

  // recursive case : 그렇지 않은 경우
  return 더 작은 문제로 새롭게 정의된 문제
}

 

5! = 5 * 4 * 3 * 2 * 1
   = 5 * 4!
   = 5 * 4 * 3!


function fac(n) {
if(n === 1) {
  return 1;
}
	return n * fac(n-1);
}
728x90