문제 풀이
재귀함수를 사용하면 된다. 함수 안에 함수를 넣어 동일한 계산이 반복되도록 하고, 최종 값이 리턴되면 된다.
입력 값이 0이 들어갈 수도 있는 데, 이 경우를 처리하도록 신경써야 한다. 따라서 초기 if (a==1) 식에서 if (a<=1)로 변경하였다.
소스코드
#include <iostream>
#define MAX 101
using namespace std;
int n;
int res;
int factorial(int a)
{
if (a<=1) return 1;
return a*factorial(a-1);
}
int main()
{
cin>>n;
res=factorial(n);
cout<<res;
return 0;
}
'C C++ > C C++ 알고리즘 문제 기타' 카테고리의 다른 글
[C/C++] 백준 1547번 공 (0) | 2022.09.17 |
---|---|
[C/C++] 백준 7568번 덩치 (0) | 2022.09.17 |
계수 정렬(카운팅 정렬) 개념, 분석, 활용 (0) | 2022.07.02 |
C언어 코드업 1023번 1023 : [기초-입출력] 실수 1개 입력받아 부분별로 출력하기(설명) (0) | 2022.02.08 |
C언어 코드업 1022번 1022 : [기초-입출력] 문장 1개 입력받아 그대로 출력하기(설명) (0) | 2022.02.08 |
댓글