문제 출처: www.acmicpc.net/problem/8393
1. 코드
2. 풀이
int N;
cin >> N;
먼저 N을 입력을 한다.
cout << sum(N);
그리고 sum(N)을 출력을 할 것인데 sum() 함수에 대한 코드를 보자
int sum(int n)
{
if (n == 1)
return 1;
else
return n + sum(n - 1);
}
sum() 함수는 임시적으로 만든 함수이다. 구성은 위 코드와 같다.
if (n == 1)
return 1;
else
return n + sum(n - 1);
n이 1이라면 1을 반환을 하는데 만약 아니라면 n + sum(n - 1)을 반환하는데 이러한 구성이 재귀이다. 실행 중인 함수에서 자기 자신을 다시 호출하는 것을 재귀라고 하는데 예시로 3을 입력을 했으면 아래 표와 같은 동작을 한다.
실행순서 | return n + sum(n - 1) |
1 | return 3 + sum(2) |
2 | return 2 + sum(1) |
3 | return 1 |
4 | return 2 + sum(1) ⇒ return 2 + 1 ⇒ return 3 |
5 | return 3 + sum(2) ⇒ return 3 + 3 ⇒ return 6 |
그래서 결과적으로 3을 입력했을 때 3 + 2 + 1 = 6을 수행하여 6을 반환하고 그것을 출력한다.
'컴퓨터 > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 2742번: 기찍 N [C++] (0) | 2020.12.07 |
---|---|
백준 알고리즘 15552번: 빠른 A+B [C++] (0) | 2020.12.04 |
백준 알고리즘 10950번: A+B - 3 [C++] (0) | 2020.12.01 |
백준 알고리즘 2739번: 구구단 [C++] (0) | 2020.11.30 |
백준 알고리즘 2884번: 알람 시계 [C++] (0) | 2020.11.29 |