더북(TheBook)

예제 12-17 패턴과 재귀를 이용하여 피보나치 수열 구현 ▶ FibonacciSwitch.cs

static int Fib(int n)
{
    switch (n)
    {
        case 0: return 0;
        case 1: return 1;
        case var _ when n > 1: return Fib(n - 2) + Fib(n - 1);  ----- var 패턴과 가드 절을 이용하여 재귀 부분을 구현
        default: throw new ArgumentOutOfRangeException(
            nameof(n), "Input must be non-negative");
    }
}

 


➊ 상수 패턴을 이용하여 기본 정의를 구현
➋ 패턴 매칭이 이루어지지 않았다면 입력값이 유효하지 않은 것임

이 예제는 실전에서 절대로 사용하지 않을 만큼 비효율적이지만, 명세를 직접 코드로 변환하는 방법을 명확히 보여준다.

이 예제의 가드 절에서는 패턴 변수를 사용할 필요가 없기 때문에 버림 식별자(_)를 사용했다. 대부분의 경우 패턴은 새로운 패턴 변수를 생성하고, 이렇게 생성된 패턴 변수는 가드 절에서 사용되거나 case의 본문에서 사용되곤 한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.