피보나치,메모이즈이용
메모이제이션(또는 메모이즈)이란 프로그래밍을 할 때 반복되는 결과를 메모리에 저장해서 다음에 같은 결과가 나올 때 빨리 실행하는 코딩 기법을 말함.
메모라는 객체에 대한 클로저가 있는 함수를 반환 하므로 함수 호출 결과를 "메모"에 기록 할 수 있습니다.
function fibonacci(n) {
// TODO: 여기에 코드를 작성합니다.
//메모이즈 피보 1
let memo = [0, 1]; //배열로 0, 1일 때 담고 시작
let fibo = function (n) {
if(typeof memo[n] !== 'number') {
memo[n] = fibo(n-2) + fibo(n-1);
}
return memo[n];
}
return fibo(n);
//메모이즈 피보 2
/*
let memo = {} //빈 객체로 시작
return function fibo(n) {
if (n in memo) { return memo[n] )
else {
if (n <= 1) { memo[n] = n }
else { memo[n] = fibo(n - 1) + fibo(n - 2) }
return memo[n]
}
}
*/
/*기본 피보
if(n < 2) {
return n;
}
return fibonacci(n-2) + fibonacci(n-1)
*/
}
실행하면
"memo"객체에 피보나치를 계산하는 값 (n)에 대한 키가 포함되어 있으면 간단히 memo [n]을 반환합니다.
"memo"객체에 n에 대한 키가 포함되어 있지 않으면 n에 대한 피보나치 수를 계산하여 "memo"객체에 키-값 쌍으로 저장합니다.
메모화를 사용하면 재귀적 피보나치 함수를 실행하는 횟수를 줄일 수 있습니다.
Author And Source
이 문제에 관하여(피보나치,메모이즈이용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ppaimar16/피보나치메모이즈이용저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)