재귀함수 호출법 <과제>

🎇<출력화면>

🎊<메인 함수>

🔑<코드+주석>:

코드를 입력//#include <stdio.h>
//
//void draw_star(int n) {
//	
//	if (n <= 0) {	//n의 값이 0보다 작을 때 
//		printf("\n"); 
//		return;
//	}
//	else {
//		printf("*"); 
//		draw_star(n - 1); //함수 재호출 
//
//	}
//	return;
//}
//
//int get_sum(int n, int m) {
//	
//	if (n == m) //n값과 m값이 같을 때 
//		return n; //리턴값은 n
//	else
//		return n + get_sum(n + 1, m); //n+get_sum(n+1,m)로 함수 재호출 
//}
//
//int main() {
//
//	draw_star(3);
//	draw_star(5);
//
//
//	printf("1+2=	%d\n ", get_sum(1, 2));
//	printf("1+2+3=	%d\n", get_sum(1, 3));
//	printf("1+2+3+4=%d\n", get_sum(1, 4));
//
//
//	return 0;
//}하세요

📢느낌점 :이번 개인 과제인 재귀함수 (Recursive call) 관련 문제를 풀면서 내가 아직 재귀함수를 통해 능숙하게 프로그램을 만드는 실력이 아님을 깨닫게 되었다. 먼저 이 문제를 풀때 처음에 생각한 것은, 메인 함수에 적혀있는 함수를 어떻게 반복문을 사용하지 않고 재귀함수 호출법으로 함수를 구성하는냐가 제일 중요한 포인트였다. 이는 재귀함수 호출법에 대한 개념과 원리를 바탕으로 풀어야 했었고, 재귀함수 개념과 원리를 통해 나는 결국 get_sum()의 함수에서 n과 m이 같으면 리턴값을 n으로 주고 아니면 n+get_sum()함수를 통해 함수를 재호출하여 n과 m값이 같아질때까지 함수를 재호출하는 법을 알아내었다. 하지만 다른 함수인 draw_star()함수에서 ‘’을 찍을 때 재귀함수 호출하는 리턴 값을 draw_star(n-1)으로 주어 함수를 재호출하는 법을 구했지만, 계속 ‘’이 8개로이어져서 원하는 출력값을 출력해 내지 못했다. 결국 시간이지나서 이 함수에 대해 자세히 알아보니 n의 값이 0보다 작거나 같을 때 printf(“\n”)로 줄을 띄어쓰기를 하고 리턴을 해야되는 것을 깨닫게 되었다. 결국 이번 과제에서는 함수를 재호출하는데에는 성공하였지만, 이를 구현하기 위해 생각해야할 시간이 많이 소모 되었고, 리턴값을 무엇을 주어야하는지와 띄어쓰기가 어디에 위치해야 하는지를 잘 알지 못하였다. 그러므로 나는 앞으로 재귀함수 호출법에 대한 원리를 다시 한번 살펴보고,이를 통해 재귀함수 호출법을 완벽히 습득하여 다른 예제를 통해서 재귀함수를 호출하는 함수를 구현해야겠다고 이번 과제를 통해 생각하였다.

좋은 웹페이지 즐겨찾기