C언어/따배씨 c언어
[따배씨] 팩토리얼 예제
newbeverse
2022. 12. 15. 21:32
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
long loop_factorial(int n);
long recursive_factorial(int n);
int main()
{
int num = 5;
printf("%d\n", loop_factorial(num));
printf("%d\n", recursive_factorial(num));
return 0;
}
long loop_factorial(int n)
{
long box = 1;
if (n > 0)
{
while (n > 0)
{
box = n * box;
n = n - 1;
}
return box;
}
if (n == 0) return 1;
}
long recursive_factorial(int n)
{
if (n <= 2)
return n;
n = n * recursive_factorial(n - 1);
}
결과값
120
120
실수 사례
이 문제는 반복문과 팩토리얼을 사용해서 함수 두개를 구현하는 것.
예전에 라피신에서 풀었던 문제인데 안풀어져서 책에서 팩토리얼 관련 예제를 찾아봐야 했다.
곁눈질하며 배운 지식으로, 풀줄은 알았지만 '이해하진 않고 넘어갔구나' 라는 생각이 확 밀려오면서 한 문제 한 문제 이해하고 넘어가지 못하니까 의미없음을 느낀다.
역시나 이번에도 팩토리얼 예제를 찾아본 만큼 내가 이해하지 못한 부분이 있을것이다.
남은 팩토리얼 강의를 꼼꼼히 봐야한다고 느껴서 정독하고오겠다.
정독 후
충격 그 자체..

우선 교수님이 짜신 코드부터보자.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
long loop_factorial(int n);
long recursive_factorial(int n);
int main()
{
int num = 5;
printf("%d\n", loop_factorial(num));
printf("%d\n", recursive_factorial(num));
return 0;
}
long loop_factorial(int n)
{
long ans;
for (ans = 1; n > 1; n--)
ans *= n;
return ans;
}
long recursive_factorial(int n)
{
if (n > 0)
{
return n * recursive_factorial(n - 1);
}
else
return 1;
}
말도안되게 깔끔하다. 그리고 굉장히 짧다.
여기서 교수님의 말씀중 기억남는건 return 앞에 결과값을 도출시켜놓은 것이 가장 수학적으로 표현하기 깔끔하다고 하셨음.
반응형