일단 재귀(rescursive)란 원래 자리로 되돌아가거나 되돌아 온다는 뜻이다.
따라서 자기 자신에게 되돌아 온다는 뜻을 내포하고 있다.
재귀함수의 구조
function recurse(){
//,,,
recurse();
//...
}
재귀함수는 반드시 함수를 멈추는 조건을 가지고 있어야한다. 그렇지 않으면 무한반복된다.
function recurse(){
if(condition){
//stop calling inself
}else{
recurse();
}
}
간단한 재귀함수(Recursive call) 예제
3부터 1까지 카운트다운 해주는 프로그램을 만든다고 하자
3
2
1
이 countDown함수는 결과가 3만 나올 것이다.
function countDown(fromNumber){
console.log(fromNumber);
}
countDown(3);
3에서 1부터 나오게 하기 위한 방법
1.먼저 3을 프린트
2. countdown(2)는 2를 보여주게 프린트
3.countdown(1)은 1을 보여주게 프린트
function countDown(fromNumber){
console.log(fromNumber);
countDown(fromNumber-1);
}
countDown(3);
이렇게 코드를 치면, 에러가 나지 않을것 같지만 함수를 종료하는 문이 없어서
maximum call stack size exceeded가 뜬다
countDown()함수는 파라메터가 0일때 멈춘다
function countDown(fromNumber){
console.log(fromNumber);
let nextNumber = fromNumber -1;
if(nextNumber>0){
countDown(nextNumber);
}
}
countDown(3);
재귀함수로 1부터 n까지의 숫자 합 구하기
1 -> 1
2 -> 2+1
3->3+2+1
4->4+3+2+1
5->5+4+3+2+1
function countN(number){
if(number<=1){
return number;
}
return number + countN(number-1);
}
'Development (국비 복습 ) > JavaScript' 카테고리의 다른 글
자바스크립트 closure (0) | 2023.02.27 |
---|---|
구조분해할당 (0) | 2023.02.26 |
input안에 값넣으면 리스트 추가 (0) | 2023.02.24 |
자바스크립트 call() (0) | 2023.02.22 |
자바스크립트 this 키워드 !!!!!!!!!! (0) | 2023.02.22 |
댓글