재귀 #1
function sumTo(num) { if (num <= 1) { return num; //만약 num 이 1 이하이면 num을 반환한다. } return num + sumTo(num - 1); //그렇지 않으면 num과 sumTo(num - 1)의 합을 반환한다. }
재귀 #2
function unpackGiftbox(giftBox, wish) { for (let i = 0; i < giftBox.length; i++) { //giftBox 배열을 반복 const item = giftBox[i]; if (typeof item === 'string') { //현재 요소가 문자열이고 if (item === wish) { //wish와 같으면 true를 반환한다. return true; } } else if (Array.isArray(item)) { //현재 요소가 배열이면 if (unpackGiftbox(item, wish)) { return true; //unpackGiftbox 함수에 현재 요소와 wish를 인자로 넘겨 재귀적으로 호출한다. 반환된 결과가 true이면 true를 반환한다. } } } return false; //모든 요소를 반복한 후, true가 반환되지 않았다면 false를 반환한다. }