[C로 쓴 자료구조론] 1장 연습문제-7번(팩토리얼) 풀이

두비니

·

2020. 5. 5. 14:09

 

 

문제


7. 계승 함수 n!은 n<=1일때 1의 값을, n>1일때 n*(n-1)!의 값을 갖는다.

n!을 계산하는 순환함수와 반복 함수를 모두 C로 작성하여라.


 

 

이거 재귀함수 근본문제죠?

 

재귀함수가 어려우신 분들은 제가 며칠 전 작성한 글 참고해 주시면 좋을 것 같습니다.

 

글은 여기!

https://dokhakdubini.tistory.com/190?category=814319

 

[재귀함수] 재귀함수 구현할 때 염두에 두면 좋은 것들

작년에 c언어를 처음 배울 때도 재귀함수에 대해서 배웠는데 너무 어려워서 그냥 무시한 적이 있었는데 물론 그랬다가 지금 충분히 고통을 받을 수 있었습니다. 그래서 재귀함수와 함께 지지고 볶고 하다가 결국..

dokhakdubini.tistory.com

 

 

 

그래서 일단 함수를 작성할 때는

 

n<=1일때까지 재귀함수 꼴로 진행 할 것이고,

1 이상일때는 n*(n-1)!을 리턴해주는 방식으로 진행해주면 됩니다.

 

재귀함수 전체를 이해하려 하지말고, 수열의 점화식을 작성한다는 느낌으로 작성합시다.

 

 

#include <stdio.h>

int factorial(int n);

int main() {
	int n;

	printf("n의 값을 입력하세요: ");
	scanf(" %d", &n);

	printf("n! = %d", factorial(n));

}

int factorial(int n) {
	if (n <= 1)
		return 1;
	else
		return n * factorial(n - 1);
}

 

 

쉽죠? 간단한 재귀함수 문제였습니다.