Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- 오토레이아웃
- swift
- CICD
- Content Compression Resistance priority
- gitlab
- ai expo
- ReactiveX
- RxCocoa
- Autolayout
- rxswift
- AI
- 자료구조
- gitlabci/cd
- IOS
- Union-Find
- 클린아키텍처
- OperationQueue
- cleanarchitecture
- mvvm
- CI/CD
- Content Hugging priority
- swift알고리즘
- 백준
- 동작과정
- apple intelligence
- 애플인텔리전스
- RxSwift요약
- LLM
- 동시성프로그래밍
- 알고리즘
Archives
- Today
- Total
JosephCha의 개발일지
백준 알고리즘 (팩토리얼) No. 10872 본문
https://www.acmicpc.net/problem/10872
재귀 단계
피보나치 수 역시 단순 for문으로도 구할 수 있지만, 학습을 위해 재귀를 써 봅시다.
www.acmicpc.net
코드
import Foundation
let a = readLine()
func recursive(_ n:Int) -> Int{
if n == 0 {
return 0
} else if n == 1{
return 1
} else {
return n * recursive(n-1)
}
}
let b = Int(a!)
print(recursive(b!))
설명
컴공 1학년때, 나를 괴롭히던 재귀 함수다.
팩토리얼은 해당 숫자에서 1까지의 곱을 의미한다.
무슨소린지 헷갈리니, 예시를 들자면
ex) 5!(5의 팩토리얼) -> 5X4X3X2X1 이다.
recursive 함수를 살펴보면,
입력된 n의 값이 2 이상일 경우, 재귀 함수 프로세스를 진행 시킨다.
재귀 함수는 n의 값을 -1씩 시켜면서 n이 1이 될때까지 진행시킨다.
else if n == 1{
return 1
} else {
return n * recursive(n-1)
}
if n == 0 는 0!에 대한 예외 처리일 뿐, 재귀함수 프로세스에 아무런 영향을 끼치지 않는다.
if n == 0 {
return 0
}
재귀함수 TIP
재귀 함수는 말이나, 글로 설명하기 힘들다.
제일 정확하게 이해하는 방법은 디버깅을 해보며 재귀함수를 따라가는 것이다.
'알고리즘 및 자료구조' 카테고리의 다른 글
병합정렬 (0) | 2022.04.20 |
---|---|
동적 계획법(DP) (0) | 2022.02.24 |
선택정렬 (0) | 2021.12.08 |
삽입정렬 (0) | 2021.12.08 |
버블정렬 (0) | 2021.12.06 |
Comments