본문 바로가기

코딩/자바스크립트

자바스크립트 메모이제이션 콘솔 하나씩 다 찍어보기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<!DOCTYPE html>
<html>
<body>
 
<p id="demo">Click the button to change the layout of this paragraph</p>
 
<script>
var fibonacci2 = function(){
  var memo = [01];
  var count2 = 0;
  
  var fib = function(n) {
    count2++;
    var result = memo[n];
    
    if (typeof result !== 'number') {
      console.log("result type : " + typeof result);  
      result = fib(n-1+ fib(n-2);
      memo[n] = result;
      
      console.log("======================");  
      console.log("n = " + n);
      console.log("typeof = " + typeof memo[n]);
      console.log("result = " + result);
      console.log("memo = " + memo);
      console.log("memo[n] = " + memo[n]);
      console.log("======================");  
    }
    return result; //var fib의 리턴값
  };
  
  return fib; //fibonacci2의 리턴값
}();
 
for (var i = 0; i <= 10; i += 1) {
  console.log(i + " = " + fibonacci2(i));
}
 
//console.log("count2 = " + count2)
 
</script>
 
</body>
</html>
 
cs


이렇게 하나씩 찍어보면 배열안에 들어가 있는게 number타입이라 새로운 타입(for문에 호출할때의 변수 값 i )일때만

재귀함수가 반복되어 불필요한 반복을 피함