[C언어] N! 팩토리얼을 이용한 반복문과 재귀함수
반복문 for, while, do while을 쉽게 이해 및 생각해보기 위해 몇자 적었습니다.
! 팩토리얼을 활용하여 반복문을 작성하겠습니다.
** 반복문 형식
1. for문
for(시작값; 범위; 조건)
{
}
2. do while문
do
{
} while(조건 범위);
3. while문
while(조건 범위)
{
}
** 함수 형식
형식)
type function_ex(변수)
{
}
예1)
int main(void)
{
}
예2)
int function_ex(int n1, int n2, ……)
{
}
** 재귀함수 형식
= 제어문 + 탈출 조건(탈출 조건이 없으면 스택 오버플로우라는 중대한 오류에 빠지게 됨)
형식)
if(조건)
{
}
else
{
}
탈출 조건)
return exit_condition(탈출 조건);
준비물 : 연습장, PC, Visual C++
반복문 연습 문제)
변수 조건)
int i = 1, int n = 4, unsigned long nRes, unsigned long factorial;
1. N! 팩토리얼을 순서도로 설계하시요.
2. 반복문과 함수 형식을 사용하여 구현하시요.
출력값 : 4! = 24
#include <stdio.h>
int main()
{
unsigned long nRes;
int n = 4;
nRes = fact(n);
printf("%d! = %d\n", n, nRes);
}
unsigned long fact(int n)
{
unsigned long factorial = 1;
int i;
for(i=1; i<=n; i++)
factorial *= i;
return factorial;
}
#include <stdio.h>
int main()
{
unsigned long nRes;
int n = 4;
nRes = fact(n);
printf("%d! = %d\n", n, nRes);
}
unsigned long fact(int n)
{
unsigned long factorial = 1;
int i = 1;
do
{
factorial *= i;
i++;
}
while(i<=n);
return factorial;
}
#include <stdio.h>
int main()
{
unsigned long nRes;
int n = 4;
nRes = fact(n);
printf("%d! = %d\n", n, nRes);
}
unsigned long fact(int n)
{
unsigned long factorial = 1;
int i = 1;
while(i<=n)
{
factorial *= i;
i++;
}
return factorial;
}
3. 재귀함수로 구현하시요.
출력값 : 4! = 24
소스 - 재귀함수
#include <stdio.h>
int main()
{
int n;
unsigned long nRes;
n = 4;
nRes = fact(n);
printf("%d! = %d", n, nRes);
}
unsigned fact(int n)
{
static unsigned factorial = 1;
static int i = 1;
if(i <= n)
{
factorial *= i++;
return fact(n);
}
else
{
return factorial;
}
}