개발을 시작하는 이야기

[BaekJoon] 팩토리얼 본문

개발 이야기/Algorithm Study

[BaekJoon] 팩토리얼

Teiresias 2022. 6. 5. 06:26

Swift Study 이주의 문제 1

 

문제

0보다 크거나 같은 정수 N이 주어진다. 이때, N!을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 정수 N(0 ≤ N ≤ 12)이 주어진다.

출력

첫째 줄에 N!을 출력한다.

예제 입력 1 복사

10

예제 출력 1 복사

3628800

예제 입력 2 복사

0

예제 출력 2 복사

1

for문을 사용해도 되지만 재귀함수를 활용해서 풀어야 하는 문제

재귀함수란? 정의 단계에서 자신을 재참조 하는 함수로 어떤 사건이 자기 자신을 포함하고 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)이라고 한다. 설명 할 때 자기를 포함한 것이라고 생각하면 편하다.

let num = Int(readLine()!)!

func factorial(_ num: Int) -> Int {
    if num == 0 { return 1 }
    return num * factorial(num - 1)
}

print(factorial(num))

함수에서 본인 함수를 다시 참조하는데, 탈출 코드를 재대로 작성해서 무한으로 재귀하는 경우를 주의해야 한다.

맨 처음 재귀함수를 배웠을때 조금 어려웠던 기억이 있어서 스터디원들과 함께 해보면 좋을것 같아서 이주의 문제로 선정했음.

물론 잘하는 몇몇분들에게는 쉬울수 있겠으나 처음 시작하시는 분들도 계시니까.