on
재귀
재귀
반응형
1. 기본
재귀가 무한루프에서 빠지지 않으려면
base case : 적어도 하나의 recursion에 빠지지 않는 경우가 존재해야합니다.
recursion case : recursion을 반복하다 보면 결국 base case로 수렴해야합니다.
자바스크립트 코드 입니다.
const fun = function(n){ if(n<1){ //base case return; }else{ //recursion case console.log("hello"); fun(--n); } } fun(3);
2. 패턴사용.
컴포지트패턴으로 만들어 봤습니다.
세팅방법만들 때 좀 버벅였는데, 생각없이 코딩해서 그런 것 같습니다.
numbers.unshift(number) 할 때 배열 길이 본다고
console.log(numbers.unshift(number) ) 이렇게 처리 했다가
나중에 아무 생각없이 통채로 지워버려서 오동작 했었음.
const Number = class{ constructor(me){ this._me = me; } setSmaller(number){this._smallerNumber = number;} getSmaller (){return this._smallerNumber} get me (){return this._me;} execute(){console.log(`hello ${this._me}`);} } const Rec = class{ constructor(){ this._numbers = []; } addNumber(number){ this._numbers.push(number) } hello(){ this._hello2(this._numbers[0]); } _hello2(number){ if(number){ number.execute(); const child = number.getSmaller(); this._hello2(child); } } } const rec = new Rec(); // 세팅 방법 1 // const num1 = new Number(1); // const num2 = new Number(2); // num2.setSmaller(num1); // const num3 = new Number(3); // num3.setSmaller(num2); // const num4 = new Number(4); // num4.setSmaller(num3); // rec.addNumber(num4); // rec.addNumber(num3); // rec.addNumber(num2); // rec.addNumber(num1); //세팅방법2 const range = 4; let i = 1; const numbers = []; while(i{ rec.addNumber(number); }) rec.hello();
공유하기 글 요소 저작자표시
from http://paulaner80.tistory.com/186 by ccl(A) rewrite - 2021-09-26 11:01:53