오늘은 재귀에 대해 배워보았습니다
재귀란 ?
재귀를 간단하게 정의하면 한 함수가 자기 자신을 호출하는 순간입니다.
재귀 예제를 보자면
//음수가 들어오지 않는다는 가정하에 입니다
function factorial(el) {
if (el===0) return 1;
return el * factorial(x-1);
}
factorial(3);
// 6
이렇게 한 함수가 자기 자신을 호출 하는것을 재귀라고 합니다
종료 조건
간단하게, if(false값이 들어왔다면) { stop }과 같이 이해하시면 됩니다.
종료 조건은 재귀의 안전장치입니다. 종료 조건을 여러분들의 긴급 브레이크처럼 생각하세요.
falsy한 값이 들어왔을 때, 재귀가 계속하여 동작하는 것을 방지해줍니다.
재귀함수가 멈추지 않고 계속 동작을 한다면
stack of flow가 발생합니다 for문의 무한 loop 와 비슷한것이라 생각 하면 되겠습니다.
기반 조건(Base case, 기저 상태)
간단하게, if(이런 일이 일어난다면) { 성공! }과 같이 이해하시면 됩니다.
이 조건 역시 재귀 함수를 멈춘다는 점을 감안하면, 기반 조건은 어쩌면 재귀의 종료조건과 비슷합니다.
하지만 종료 조건은 모든 나쁜 데이터들을 잡아낸 다는 것을 기억하세요.
반면에 기반 조건은 재귀 함수의 목적 입니다.
기반 조건은 주로 if 문 내부에 있습니다.
팩토리얼 예제에서는, if (el === 0) return 1;이 기반 조건이었습니다.
el이 0까지 내려갔을 때, 우리는 팩토리얼을 구하는데 성공한 것입니다!
재귀
간단하게, 함수가 자기 자신을 호출하는 것입니다. 팩토리얼 예제에서, return el * factorial(el -1);부분이 실제로 재귀가 일어나는 곳입니다. 우리는 숫자 x가 factorial(x-1)함수의 결과 값으로 곱해진 어떤 값을 반환합니다.
이런식으로 재귀를 이해하면 재귀를 다루기가 쉬워질 것 입니다
좋았던점 .
-재귀함수의 기초를 잘 이해했다
-문제를 푸는데 기초는 잘 다져진것 같다
-오늘 배운것 치고는 잘 풀어나갔다
아쉬운점
-응용하는 능력이 부족해서 인지 재귀함수를 응용해서 풀어내는데 오래걸렸다
-재귀함수의 기초를 공부하는데 시간이 좀 걸린것 같다
-아직 어려운 문제들은 시간이 오래걸린다