Memoization, fibonacci


Memoization?

  • 備考
  • 繰り返し結果
  • メモリ
  • 以降必要なときに出して使います.
  • javascriptでは、モジュールによって持続的なストレージスペースを作成できます.
    この機能によるマルチメディア・モードの実装
    再帰法を用いてフィボナッチ数列を解く過程で,再帰を用いて大量の反復を実行できることが分かった.これらの情報をより効果的に取得する方法を見てみましょう.
    計算されたコンテンツをメモリに保存し、必要に応じてロードします.
    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
    };