1. 팩토리얼 (Factorial)
팩토리얼은 자연수 n에 대해 n! = n x (n-1) x (n-2) X ... X 1로 정의됩니다. 예를 들어, 5! = 5 X 4 X 3 X 2 X 1 = 120입니다.
function factorial(n) {
// 기본 사례: 0! = 1, 1! = 1
if (n === 0 || n === 1) {
return 1;
}
// 재귀 호출
return n * factorial(n - 1);
}
// 예제 사용
console.log(factorial(5)); // 출력: 120
재귀 호출이 깊어지면 스택 오버플로우가 발생할 수 있고, 큰 숫자의 팩토리얼을 계산할 때는 반복문을 사용하는 것이 더 안전할 수 있습니다.
2. 피보나치 수열 (Finbonacci Sequence)
피보나치 수열은 첫 두 수가 0과 1로 시작하고, 이후의 수는 이전 두 수의 합으로 정의됩니다. 즉, F(n) = F(n-1) + F(n-2)입니다, 예를 들어 수열은 다음과 같습니다.
- 0, 1, 1, 2, 3, 5, 8, 13, ...
재귀적 구현하기
function fibonacci(n) {
// 기본 사례: F(0) = 0, F(1) = 1
if (n === 0) {
return 0;
} else if (n === 1) {
return 1;
}
// 재귀 호출
return fibonacci(n - 1) + fibonacci(n - 2);
}
// 예제 사용
console.log(fibonacci(6)); // 출력: 8(0, 1, 1, 2, 3, 5 , 8)
위의 재귀적 구현은 중복 계산이 많아 성능이 좋지 않습니다 큰 n에 대해 매우 늘릴 수 있고, 이를 개선하기 위해 메모이제이션(memoization) 또는 반복적 방법을 사용할 수 있습니다.
const fibonacciWithMemo = (function () {
const memo = {};
function fib(n) {
if (n in memo) {
return memo[n];
}
if (n == 0) return 0;
if (n == 1) return 1;
memo[n] = fib(n - 1) + fib(n - 2);
return memo[n];
}
return fib;
})();
console.log(fibonacciWithMemo(6)); // result: 8
GitHub - Koras02/javascript-algorithm
Contribute to Koras02/javascript-algorithm development by creating an account on GitHub.
github.com
LIST
'Front-End > JavaScript' 카테고리의 다른 글
[JavaScrit] 4(완). 그래프 알고리즘 (0) | 2025.03.20 |
---|---|
[JavaScript] 2. 탐색 알고리즘 (0) | 2025.03.06 |
[JavaScript] 1. 정렬 알고리즘 (0) | 2025.03.04 |
[Javascript] 정규표현식 (0) | 2025.02.26 |
[Javascript] Jest란 ? (0) | 2025.02.25 |