// 1
func factorial(_ num: Int) -> Int {
var result: Int = 1
for i in 1...num { // 1 * 1 + 1 * 2 + ... 1 * num
result = result * i
}
return result
}
print(factorial(5))
// 2: 42강
// 재귀함수: 자기 자신을 반복해서 호출하는 함수
// 조건을 걸어두지 않으면 스택오버플로우 현상이 나타날 수 있으므로 주의해야 한다
func factorialFx(num: Int) -> Int {
/**
! 조건을 갖지 않으면 아래와 같은 경고가 발생 !
Function call causes an infinite recursion
함수 호출로 인해 무한 재귀 호출이 발생합니다.
*/
if num <= 1 {
return 1
}
return num * factorialFx(num: num - 1)
}
print(factorialFx(num: 5))