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 앞에 결과값을 도출시켜놓은 것이 가장 수학적으로 표현하기 깔끔하다고 하셨음.

반응형