#10 - 함수 [매우 쉬움]
2019. 1. 3. 14:40ㆍ카테고리 없음
728x90
팩토리얼
음이 아닌 임의의 정수 n을 입력받아 n! (n 팩토리얼)을 구하는 함수 factorial(n)을 반복문으로 작성하시오.
0! = 1, 1! = 1 이고, n≥2일 때, n! = n * (n-1)! 이다.
ex) 4! = 4 * 3! = 4*(3*2*1)
핵심 아이디어
ㅡ 반복문 / 재귀함수 활용
ㅡ long 자료형 변수 사용
※ 결과
ㅡ 반복문과 재귀함수를 통해 두 가지의 방법으로 팩토리얼을 구하였고, 각각의 자료형을 다르게 정의했다.
ㅡ 두 함수의 결과가 같을 때 코드 0로 종료되게 만들었고, 다를 때 코드 -1로 종료되게 만들었다.
ㅡ 이를 통해 각 자료형의 표현 가능 범위를 비교할 수 있다.
<main 함수>
ㅡ line 09-12: 음의 정수를 입력할 경우, 함수에서 오류가 날 것을 고려하여 do while 반복문으로 입력값을 제어하였다.
ㅡ line 14-15: 자료형 중 long double형이 unsigned long long (int)형보다 표현 가능 범위가 넓으므로 결과는 l.d.형으로 출력했다.
주요 문법
ㅡ do while반복문으로 입력값 제어하기
ㅡ long 변수와 그에 맞는 형식 지정자
ㅡ for 반복문과 재귀함수 선언
1. factorial 함수
ㅡ 정수형 매개변수 int 를 취하는 함수 factorial(int)를 선언.
ㅡ 가령, 4!를 계산할 때에는 4*3*2*1 의 과정을 거친다.
2. factorial_2 함수
ㅡ 매개변수 n 을 취하는 함수 factorial_2(int n)를 선언. 문제 조건에 따라 함숫값을 재귀적으로 정의하고, if문을 통해 초깃값을 설정하여 완성했다.
ㅡ 가령, 4!을 계산할 때에는 4*3! = 4*3*2! = 4*3*2*1 의 과정을 거친다.
- line 14에서 result 변수에 함숫값을 미리 저장한 것은 line 17 조건문에서 비교할 때 factorial(n) 함수를 다시 호출하는 것이 비효율적이라고 생각했기 때문이다. [본문으로]
728x90