계승(階乘, factorial) 구하기
- 최초 등록일
- 2011.12.10
- 최종 저작일
- 2009.05
- 10페이지/ 한컴오피스
- 가격 3,500원
소개글
자료구조 과제 c 언어로 작성한 레포트입니다.
코드 및 분석까지 완벽한 보고서 입니다.
보고서에 코드 포함 되어있습니다.
목차
없음
본문내용
▣ 문제 분석 : 계승(階乘, factorial) 구하기
▶ 계승의 정의는 1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 말한다. 수학적 기호로는 n!로 나타낸다. 또한 0!=1로 약속하고, n이 대단히 큰 경우 스털링의 공식을 써서 근삿값을 구할 수 있다. [출처 : 네이버백과사전]
‘계승(factorial)은 반복적 정의(iterative definition) 또는 재귀적 정의(recursive definition)로 나타낼 수 있다.’에 근거하여 각 방법으로 프로그램을 작성하여 값을 구하고, 위의 두 가지 방법을 이용하여 계승의 값을 구하는 프로그램을 각각 작성하고, 정확하게 구할 수 있는 최대 n값과 n!값을 출력해본다. 또한 만약 같은 n값에 대해서 계승 값을 구하는데 수행시간의 차이가 나는 경우 그 의미를 논의해 보라.
? 반복적 정의를 이용한 계승 구하기는 다음의 정의를 바탕으로 함수를 작성한다.
??? ?? ?? ?
?? ?× ??? ? ? × ??? ? ? × ??? × ? ? ? ?? ?
? 재귀적 정의를 이용한 계승 구하기는 다음의 정의를 바탕으로 함수를 작성한다.
??? ?? ?? ?
?? ?× ??? ? ?? ?? ?? ?
▣ 문제 풀이방법 및 알고리즘
▶ main function
- main function 은 ?,? 모두 동일하다. 프로그램의 수행 시간을 알기위한 함수를 선언하고 프로그램에 대한 설명이 나온다. Factorial을 구하기 위한 수를 입력 받은 후부터 시작시간 저장을 시작하고, 결과 값을 출력한 뒤 끝나는 시간을 저장한다. 또한 초 값을 구하기 위해 종료시간과 시작시간의 차이를 1000으로 나누어준다. main function에서 가장 중요한 부분은 버퍼를 초기화 시키는 부분이라고 할 수 있다. 프로그램 재실행 여부를 물었을 시 Y or y 로 대답하게 된다면, fflush(stdin)함수를 이용함으로써 바로 전 단계에 수행되었던 값들을 버퍼에서 지워줌으로써 프로그램의 재실행이 이루어지게 된다.
참고 자료
없음