#include <iostream>
using namespace std;
int sum(int i);
int main()
{
cout << sum(10);
}
int sum(int i)
{
if (i == 1)
{
return 1;
}
return i + sum(i - 1);
}
- 수가 하나씩 적어지면서 sum(i-1)를 들어간다.
- 1이 됐을때 1을 반환해주면서 재귀를 시작한다.
1에 도달하여 재귀하기 시작하는 순서
1 -> 2 + 1 -> 3 + 3 -> 4 + 6 -> 5 + 10 -> 6 + 15 .....
결국
10 + 45를 만나면서 최종 수를 반환한다.
출력
55
팩토리얼을 구하는 재귀함수
int factorial(int x)
{
if (x == 0)
{
return 1;
}
return x * factorial(x - 1);
}
return쪽의 factorial함수내로 진입한다. 0에 도달하면 하나씩 리턴하며 돌아온다.
0 : 1
1 : 1 * 1
2 : 2 * 1
3 : 3 * 2
4 : 4 * 3 ........
이런식으로 돌아오게된다.
'Algorithm > Memo' 카테고리의 다른 글
다익스트라 알고리즘 (0) | 2021.04.19 |
---|---|
너비 우선 탐색 BFS (0) | 2021.03.25 |
깊이 우선 탐색_DFS (0) | 2021.03.25 |
힙 (0) | 2021.02.15 |