재귀

재귀

반응형

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