Algorithm & Data Structure
[JS] 재귀 함수(Recursive Function)
Dahee.jo
2022. 1. 31. 17:26
SMALL
freecodecamp를 통해 자스 문법을 배우고 있는 요즘,
재귀 파트를 시작했는데 넘나 어려운 것..
포스팅으로 정리해보고자 한다.
function sum(arr, n) {
// Only change code below this line
if (n<=0){
return 0;
} else {
return sum(arr,n-1)+arr[n-1];
}
// Only change code above this line
}
재귀 함수는 말 그대로 자기 자신을 불러오는 함수이기 때문에 그냥 호출하면 끊임없이 실행된다.
따라서 멈춰야 하는 경우를 반드시 만들어야 하는데 그 경우를 base case라고 한다. 위의 예시에선 if (n<=0) 이 해당된다.
//for문
function multiply(arr, n) {
let product = 1;
for (let i = 0; i < n; i++) {
product *= arr[i];
}
return product;
}
//재귀
function multiply(arr, n) {
if (n <= 0) {
return 1;
} else {
return multiply(arr, n - 1) * arr[n - 1];
}
}
// ex1
function countdown(n){
if (n<1) {
return [];
} else {
const countArray = countdown(n-1);
countArray.unshift(n);
return countArray
}
}
//ex2
function countup(n) {
if (n < 1) {
return [];
} else {
const countArray = countup(n - 1);
countArray.push(n);
return countArray;
}
}
console.log(countup(5)); //[1,2,3,4,5]
say you want to write a recursive function that returns an array containing the numbers 1 through n. This function will need to accept an argument, n, representing the final number. Then it will need to call itself with progressively smaller values of n until it reaches 1.
(free code camp 설명)
1부터 n까지 포함하는 배열을 리턴하는 재귀함수를 쓸 때, 함수는 인수 n을 필요로 하며, 이 n은 final number를 의미한다. 그리고 나서 함수는 1에 도달할 때까지 순차적으로 작아지는 n과 함께 자기 자신을 호출할 것이다.
cf. 백준 10872 파이썬
def factorial(n):
if n <= 0:
return 1
return factorial(n-1) * n
N = int(input())
print(factorial(N))
자바스크립트
function factorial(n) {
if(n<1) {
return 1;
} else {
return factorial(n-1) * n;
}
}
반응형