목차
https://www.acmicpc.net/problem/10872
코드
#include <iostream>
using namespace std;
int factorial(int n)
{
if(n <= 2)
{
if(n == 0) return 1;
else return n;
}
else
{
return n * factorial(n - 1);
}
}
int main() {
int n;
cin >> n;
cout << factorial(n);
return 0;
}
설명
재귀함수를 단박에 이해할수 있을거라고 생각되는 예시
하나의 함수에서 자기 자신을 다시 호출하여 푸는 재귀함수문제인데
사실 팩토리얼... 재귀함수로 안 풀어도 된다.
재귀함수 자체가 좀 리소스 측면에서는 영 꽝이지만 구현이 간단하다는 장점이 있는거라.
팩토리얼을 재귀로 풀면 자기자신인 n에 (n-1)!을 곱해주는 되는것이기 때문에..
이를 n이 적당히 작아질때(0..정도?)까지 재귀로 계속 반복해주면 풀 수 있는 문제이다.
머리속으로는 아는데 이걸 풀어서 설명하려고 하니 좀 어렵다.
'공부 > 백준(C++) - 2022~' 카테고리의 다른 글
백준 2447번: 별 찍기-10 [C++] (0) | 2022.01.23 |
---|---|
백준 10870번: 피보나치 수 5 [C++] (0) | 2022.01.23 |
백준 1002번: 터렛 [C++] (0) | 2022.01.22 |
백준 3053번: 택시 기하학[C++] (0) | 2022.01.20 |
백준 4153번: 직각삼각형[C++] (0) | 2022.01.20 |