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 = [0, 1]; 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 )일때만
재귀함수가 반복되어 불필요한 반복을 피함
'코딩 > 자바스크립트' 카테고리의 다른 글
aws ec2 ubuntu에 레디스 설치하기 (0) | 2019.12.03 |
---|---|
vue js 기초 정리 (0) | 2019.12.03 |
자바스크립트 reduce로 클릭한값 제거하기 (0) | 2018.10.01 |