function recursive(input1, input2, ...) {
// Base Case : 문제를 더 이상 쪼갤 수 없는 경우
if (문제를 더 이상 쪼갤 수 없을 경우) {
return 단순한 문제의 해답;
}
// recursive Case
// 그렇지 않은 경우
return 더 작은 문제로 새롭게 정의된 문제
// 예1. someValue + recursive(input1Changed, input2Changed, ...)
// 예2. someValue * recursive(input1Changed, input2Changed, ...)
}
1부터 num까지의 합을 구하는 방법
- 수도코드 / 기본조건 : num은 0이상의 정수
- if 문에 base case(재귀의 탈출 조건 / 재귀 호출이 멈추는 조건) 설정
0 이상의 정수임으로 1보다 작을경우 종료 / 1은 자기자신만있음으로 자기자신을 출력하고 종료- 그렇지 않을 경우! recursive case (반복되는 조건)을 설정
1부터 num까지의 수가 반복적으로 더해지도록 num + Plus(num-1)을 하여 num + num-1씩 한 수를 모두 더해준다.
ex) num 이 2라면? 2 + 1 = 3
function Plus(num) {
// Base Case : 문제를 더 이상 쪼갤 수 없는 경우 -> 단순한 문제의 해답
if(num <= 1) { // 1이면 1을 출력, 1보다 작으면 종료
return num;
console.log(num) => 10
}
// recursive Case 그렇지 않은 경우 -> 더 작은 문제로 새롭게 정의된 문제
return num + Plus(num-1) // 출력한다.
}
// -> 하나씩 풀이해본다면? num 이 4일 경우
// Plus(num) = num + num-1 + num-2 + num+3 = num
// Plus(num = 4) = 4 + 3 + 2 + 1 = 10
// Plus(num = 3) = 3 + 2 + 1 = 6
// Plus(num = 2) = 2 + 1 = 3
// Plus(num = 1) = 1 //1이되면 1을 리턴
// Plus(num = 0) = 0 //1이되면 0을 리턴
수를 담을 변수를 선언하고 해당 sum 변수에 num까지의 수를 반복적으로 더한다.
function Plus(num){
let sum = 0;
for (let i = 0; i <= num; i++) {
sum = sum + i;
}
return sum;
console.log(sum) => 10
}
참조
코드스테이츠