자바스크립트 함수 리턴과 순환 (Function Return and Recursion)

함수는 프로그래밍에서 핵심적인 개념 중 하나입니다. 자바스크립트에서 함수는 매우 유연하게 구성할 수 있으며, 함수 리턴과 순환 (recursion)은 자바스크립트 함수의 강력한 기능입니다.

함수 리턴 (Function Return)

함수 리턴은 함수가 값을 반환하는 방법을 의미합니다. 자바스크립트에서 함수는 한 번에 하나의 값만 반환할 수 있습니다.

함수 내부에서 return 키워드를 사용하여 값을 반환합니다. 반환된 값은 호출한 곳으로 전달되어 다른 변수나 다른 함수의 인자로 사용될 수 있습니다.

function add(a, b) {
  return a + b;
}

const result = add(2, 3);
console.log(result); // 5

const sum = add(5, 7) + 3;
console.log(sum); // 15

순환 (Recursion)

순환은 함수가 자기 자신을 호출하는 것을 의미합니다. 순환은 반복적으로 어떤 작업을 수행하거나 복잡한 작업을 간단하게 해결할 수 있는 방법입니다.

자바스크립트에서는 재귀 함수 (recursive function)를 사용하여 순환을 구현할 수 있습니다. 재귀 함수는 함수 내부에서 자기 자신을 호출하는 동작을 수행합니다.

function countdown(n) {
  if (n === 0) {
    console.log("완료");
  } else {
    console.log(n);
    countdown(n - 1);
  }
}

countdown(5);

// 출력:
// 5
// 4
// 3
// 2
// 1
// 완료

위의 예시는 재귀 함수인 countdown을 사용하여 역순으로 숫자를 출력하는 간단한 예제입니다. 함수가 자기 자신을 호출하면서 매개변수 n을 하나씩 감소시키면서 출력합니다. n이 0에 도달하면 “완료”를 출력하고 함수를 종료합니다.

하지만, 재귀 함수를 사용할 때에는 종료 조건을 명확히 설정해야 합니다. 종료 조건이 없거나 잘못 설정되면 함수는 무한히 호출될 수 있으며 스택 오버플로우 (stack overflow) 에러가 발생할 수 있습니다.

결론

자바스크립트에서 함수 리턴과 순환은 강력한 기능으로, 함수를 더 유연하게 사용할 수 있게 해줍니다. 함수를 활용하여 복잡한 작업을 단순화하고 반복적인 작업을 처리할 수 있습니다. 재귀 함수를 사용할 때에는 종료 조건을 명확히 설정하여 무한 호출을 방지해야 한다는 점을 기억해야 합니다.