프로그래밍/C

C언어_재귀 호출

MG_세대 2023. 10. 18. 16:02

C언어를 새로히 공부하게 되었다.

우선 자바에서는 입력값을 받을 때 java.util.Scanner를 import해 받아 썼으면

C에서는 scanf로 키보드값을 입력 받는다. 하지만 그냥 쓰게되면 다음과 같은 오류가 발생하게 된다.

따라서

  #define _CRT_SECURE_NO_WARNINGS

을 추가해주어야 정상적으로 빌드되어진다.

 

아래는 연습용 예제

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int main(void)
{
	char grade;				// 학점을 입력할 변수
	char name[20];			// 이름을 입력할 배열

	printf("학점 입력 : ");	// grade 변수에 학점 문자 입력
	scanf("%c", &grade);
	printf("이름 입력 : ");
	scanf("%s", name);		// name 배열에 이름 문자열 입력, &를 사용하지 않는다.
	printf("%s의 학점은 %c입니다.\n", name, grade);

	return 0;
}

 

재귀호출의 이해를 돕는 코드가있엇다.

위 예시 코드를 보고 숙지한 뒤 "재귀호출" 함수를 사용하여 1부터 10까지 더하는 문제가 있어 풀어보았다.

For문으로하면 더 쉽게 느껴졌겠지만 재귀호출을 이용하여 조금 버벅였다.

 

#include <stdio.h>

int rec_func(int n); // 함수 선언

int main() {
    int n = 1; // 1부터 n까지의 합을 계산할 값
    int sum = rec_func(n); // 함수 호출
    printf("1부터 %d까지의 합은: %d\n", n, sum);
    return 0;
}

int rec_func(int n) {
    if (n == 10) {
        return 10;
    }
    else {
        return n + rec_func(n + 1); // 재귀 호출
    }
}

다음과 같은 결과로 예상한 답이 도출되었다.

다음은 배열에 대해서 공부할 예정이다.