Memoization, fibonacci
Memoization?
この機能によるマルチメディア・モードの実装
再帰法を用いてフィボナッチ数列を解く過程で,再帰を用いて大量の反復を実行できることが分かった.これらの情報をより効果的に取得する方法を見てみましょう.
計算されたコンテンツをメモリに保存し、必要に応じてロードします.
Memoizationを使用してフィボナッチを実装するには、次の手順に従います.
私が考えた再帰入方式を書きました.
書き終わって、やっと感じが分かりました.
手書きコードが完成したら、私は今貴と対視することができます。
let fibonacci = function (n) {
const memo = [0, 1];
const fibo = (n) => {
// 이미 해결한 적이 있으면, 꺼내 쓰자
if (memo[n] !== undefined) return memo[n];
// 메모에 없으면, 재귀 호출을 통해 메모에 저장하자
memo[n] = fibo(n - 1) + fibo(n - 2);
return memo[n];
};
return fibo(n);
};
fibonacci(5)
let fibonacci = function (5) {
const memo = [0, 1];
const fibo = (5) => {
if (memo[5] !== undefined) return memo[n]; //-> undefined pass
// 메모에 없으면, 재귀 호출을 통해 메모에 저장하자
memo[5] = fibo(4) +fibo(3);
return memo[n];
};
return fibo(n);
};
let fibonacci = function (5) {
const memo = [0, 1];
const fibo = (4) => {
if (memo[4] !== undefined) return memo[n]; //-> undefined pass
// 메모에 없으면, 재귀 호출을 통해 메모에 저장하자
memo[4] = fibo(3) + fibo(2);
return memo[n];
};
return fibo(n);
};
let fibonacci = function (5) {
const memo = [0, 1];
const fibo = (3) => {
if (memo[3] !== undefined) return memo[n]; //-> undefined pass
// 메모에 없으면, 재귀 호출을 통해 메모에 저장하자
memo[3] = fibo(2) + fibo(0); -> memo[3] = fibo(2) + 0
return memo[n];
};
return fibo(n);
};
let fibonacci = function (5) {
const memo = [0, 1];
const fibo = (2) => {
if (memo[2] !== undefined) return memo[n]; //-> undefined pass
// 메모에 없으면, 재귀 호출을 통해 메모에 저장하자
memo[2] = fibo(1) + 0; // memo[2] = 1 + 0 // 여기 저장 meno에 추가
return memo[n];
//fibo(2)일때 값은? 리턴값 1이다.
};
return fibo(n);
};
let fibonacci = function (5) {
const memo = [0, 1, 1];
const fibo = (3) => { //2, 1
// 이미 해결한 적이 있으면, 꺼내 쓰자
if (memo[2] !== undefined) return memo[2]; // -> 1
if (memo[1] !== undefined) return memo[1]; // -> 1
메모에 없으면, 재귀 호출을 통해 메모에 저장하자
memo[3] = fibo(2) + fibo(1); // memo[3] = 1 + 1 //여기 저장 meno에 추가
return memo[n]; // fibo(3)은 memo[3]인 2다.
};
return fibo(n);
};
let fibonacci = function (5) {
const memo = [0, 1, 1, 2];
const fibo = (4) => { //3, 2
// 이미 해결한 적이 있으면, 꺼내 쓰자
if (memo[3] !== undefined) return memo[3]; // -> 2
if (memo[2] !== undefined) return memo[2]; // -> 1
// 새롭게 풀어야하는 경우, 문제를 풀고 메모해둔다.
memo[4] = fibo(3) + fibo(2); memo[4] = 2 + 1 //여기 저장 meno에 추가
return memo[n]; // fibo(4)은 memo[4]인 3다.
};
return fibo(n);
};
let fibonacci = function (5) {
const memo = [0, 1, 1, 2, 3, 5];
const fibo = (5) => {
// 이미 해결한 적이 있으면, 메모해둔 정답을 리턴한다.
if (memo[4] !== undefined) return memo[4]; // ->3
if (memo[3] !== undefined) return memo[3]; // ->2
// 새롭게 풀어야하는 경우, 문제를 풀고 메모해둔다.
memo[5] = fibo(4) + fibo(3); memo[5] = 3 + 2 =5 //여기 저장 meno에 추가
return memo[5]; // fibo(5)은 memo[5]인 5다.
};
return fibo(n); //-> 5
};
Reference
この問題について(Memoization, fibonacci), 我々は、より多くの情報をここで見つけました https://velog.io/@0hyo/Memoization-fibonacciテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol