앞서 살펴본 팩토리얼 구현 방식을 응용해, 이번엔 피보나치 수열을 함수형 프로그래밍으로 구현해보도록 하겠습니다.
var fibo = function() {
var cache = {'0' : 0, '1' : 1};
var func = function(n) {
var result = 0;
if (typeof(cache[n]) === 'number') {
result = cache[n];
} else {
result = cache[n] = func(n-1) + func(n-2);
}
return result;
}
return func;
}();
console.log(fibo(10));
유사한 방식으로 코드를 구현했습니다. 역시 cache에 캐시 값을 저장해, 수열 연산을 구현하는 즉시 실행 함수 형태와 클로저를 이용했네요.
지금까지 팩토리얼 / 피보나치 수열을 함수형 프로그래밍을 통해 각각 구현해 보았습니다. 그럼 이제, 한 발 더 나아가 cache 값과 팩토리얼 또는 피보나치 수열 함수를 인자로 받는 연산용 함수를 구현해 보도록 하겠습니다.
var cacher = function(cache, func) {
var result = 0;
var calculate = function(n) {
if(typeof (cache[n]) === 'number'){
result = cache[n];
} else {
result = cache[n] = func(calculate, n);
}
return result;
}
return calculate;
};
var fact = cacher({ '0' : 1}, function(func, n){
return n * func(n-1);
});
var fibo = cacher({'0' : 0, '1' : 1}, function(func, n){
return func(n-1) + (n-2);
});
console.log(fact(5));
console.log(fibo(5));
'Programming > Javascript' 카테고리의 다른 글
15. Javascript 함수형 프로그래밍 적용(1) - 필수 선행지식 + 커링(curry) 2 (0) | 2023.02.07 |
---|---|
15. Javascript 함수형 프로그래밍 적용(1) - 필수 선행지식 + 커링(curry) 1 (0) | 2023.02.06 |
14. Javascript 함수형 프로그래밍(4) - 팩토리얼 구현하기 (0) | 2023.01.31 |
14. Javascript 함수형 프로그래밍(3) - 배열의 원소 계산하기 (0) | 2023.01.28 |
14. Javascript 함수형 프로그래밍(2) - 함수형 프로그래밍 기본 (0) | 2023.01.18 |