C언어
함수
khon98
2020. 12. 4. 11:59
함수
1.
- 함수는 입력을 받아 처리한 뒤에 출력하는 구조를 가짐
입력 > 함수 > 출력
2.
- 함수는 특정한 기능에 대한 소스코드가 반복되는 것을 줄이도록 해줌
반환 자료형 함수명(매개변수) {
// 수행될 명령어
return 반환할 값;
}
3.
- 함수에서 매개변수와 반환할 값은 경우에 따라서 없을 수 있음
- 매개변수 및 반환할 값이 없을 때의 자료형은 void
반환 자료형 함수명(매개변수) {
// 수행될 명령어
return 반환할 값;
}
* 매개변수와 return 반환할 값은 없어도 되는 코드
* 말머리 붙이기
#include<stdio.h>
#include<cstdlib>
void dice(int input) {
printf("khon이 던진 주사위: %d\n", input);
}
int main(void) {
dice(3);
dice(5);
dice(1);
system("pause");
return 0;
}
* 더하기 함수 만들기
#include<stdio.h>
#include<cstdlib>
int add(int a, int b) { // 매개변수
return a + b;
}
int main(void){
printf("%d\n", add(10, 20));
printf("%d\n", add(50, -20));
printf("%d\n", add(70, 105));
system("pause");
return 0;
}
* 사칙연산 함수 만들기
#include<stdio.h>
#include<cstdlib>
void calculator(int a, int b) {
printf("%d + %d = %d\n", a, b, a + b);
printf("%d - %d = %d\n", a, b, a - b);
printf("%d * %d = %d\n", a, b, a * b);
printf("%d / %d = %d\n", a, b, a / b);
printf("\n"); // 줄 바꿈
}
int main(void) {
// 연산한걸 출력
calculator(10, 3);
calculator(15, 2);
calculator(18, 4);
system("pause");
return 0;
}
------------------------------
재귀 함수
- 재귀 함수란 자기 자신을 포함하는 함수
- 기본적으로 자기 자신을 계속 불러냄
- 따라서 반드시 재귀 종료 조건이 필요함
* 재귀 함수를 이용한 팩토리얼
팩토리얼
- 자기 자신까지 모든 숫자를 곱한 결과
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<cstdlib>
// 5! = 1 * 2 * 3 * 4 * 5 = 120
int factorial(int a) {
if (a == 1) return 1; // a가 1일때 return 1을 해줌으로 무한 반복이 되지 않도록 막아줌
else return a * factorial(a - 1); // a가 1이 아니라면 a를 곱하고 팩토리얼에 a - 1을 매개변수로 넣어줌
}
int main(void) {
int n;
printf("n 팩토리얼을 계산합니다. ");
scanf("%d", &n);
printf("%d\n", factorial(n));
system("pause");
return 0;
}
------------------------------
- C언어는 함수로 시작해서 함수로 끝나는 언어
- 재귀 함수는 반복적으로 자기 자신을 불러내므로 경우에 따라서 연산 횟수가 급격히 증가할 수 있음(무한루프 조심)