순환(recursion)이란?
어떤 알고리즘이나 함수가 자기 자신을 호출하여 문제를 해결하는 프로그래밍 기법이다.
주의할 점
1. 반드시 순환 호출에는 순환 호출을 멈추는 문장이 포함되어야 한다.
2. 문제의 크기가 순환이 진행될수록 작아지는 것에 유의해야 한다.
문제를 풀면서 생각하지 못했던 점들
1.반환값이 꼭 max여야 한다는 생각에 다른 식으로 접근을 하지 못했다.
==> 1시간 정도 고민해봤지만 반복문으로 밖에 코드가 나오지 않아 구글링을 했다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
#include <stdio.h>
int findMax(int arr[],int n)
{
if (n == 0) return arr[0]; //배열의 index가 0일 때 a[0]반환
int max = findMax(arr,n - 1); //max에 a[0]부터 들어가짐.
arr[n] = max < arr[n] ? arr[n] : max; // ?이전의 식이 true이면 arr[n]반환, false이면 max반환
return arr[n];
}
int main(void)
{
int arr[] = { 4,62,56,78 }; //배열 값 초기화
printf("%d",findMax(arr,3)); //최댓값 출력
return 0;
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
혼자서 척척 풀 수 있는 실력을 가질 그날까지 파이팅!
틀린 점 있으며 피드백 부탁드립니다. 감사합니다. 좋은 하루 보내세요!!
'Programming > C' 카테고리의 다른 글
C언어) 간단한 미로찾기 게임 (0) | 2020.06.02 |
---|---|
C언어) 환율 계산기 프로그램(달러, 원) (0) | 2020.05.02 |
C언어) 달력 만들기(2/2) 기능추가, code refactoring (0) | 2020.03.26 |
C언어) 달력 만들기(1/2) 기본 (1) | 2020.03.23 |