본문 바로가기
Algorithm/문제풀이_백준

Swift) 백준 10872번

by Joahnee 2021. 7. 31.

요구능력 : 재귀함수를 쓸줄아느냐

코드설명 : 숫자를 받아서 for문으로 돌렸따..

후기 : 단원명이 재귀함수인데 for문을 써서 풀다니... 뭔가 이상해서 구글링 해봤는데 대부분 재귀함수로 풀었더라.. 1학년 C언어 배울때 공부했던 기억이...

let N = Int(readLine()!)!
var result = 1
factorial(N)

func factorial(_ N:Int) {
    if N == 0 {
        print("\(result)")
        return
    }
    for i in 1...N {
        result = result * i
    }
    print("\(result)")
}

 

코드설명 : 간단해서 따로 할 필요는 없을거 같고,,

재귀함수는 함수안에서 같은 함수를 재귀적으로 호출하는거다.

예를들어 아래 코드에서 N이 5이면

5 * factorial(4)

5 * 4 * factorial(3)

5 * 4 * 3 * factorial(2)

5 * 4 * 3 * 2 * factorial(1)

5 * 4 * 3 * 2 * 1 * factorial(0)

5 * 4 * 3 * 2 * 1 * 1

이런식으로 진행된다.

후기 : 이거 꼬아서 내면 되게 복잡할거같다.

let N = Int(readLine()!)!

print("\(factorial(N))")

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

'Algorithm > 문제풀이_백준' 카테고리의 다른 글

Swift) 백준 2447번(분할정복)  (0) 2021.08.03
Swift) 백준 10870번  (0) 2021.08.02
Swift) 백준 1316번  (0) 2021.07.31
Swift) 백준 2941번  (0) 2021.07.29
Swift) 백준 2908번  (0) 2021.07.29

댓글