Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- unreal
- 자료구조
- C++
- 구조체포인터
- TPS
- 오늘의에러
- 개발
- 구조체
- 프로그래밍
- 개발자
- 미라클모닝
- fstring
- 게임개발
- permutation
- 코딩테스트
- 재귀함수
- 얌얌코딩
- 백준
- dfs
- 언리얼
- 탐색기법
- UE5
- 커스텀로그
- 링크드리스트
- c++자료구조
- 코딩
- 연산자오버로딩
- 내가해냄
- 언리얼로그
- 게임프로그래밍
Archives
- Today
- Total
All is well
[YYBASIC0207/얌얌코딩] 재귀함수 예제 생각해보기 본문

- `dfs1(int level) `은 함수가 호출되면 num을 증가시키고, 호출이 끝나면 num을 감소시킵니다. 따라서 최종 num은 0이 됩니다.
- `dfs2(int level)` 은 함수가 호출될 때, 호출이 끝났을 때 모두 num을 증가시킵니다. 이는 함수가 얼마나 순회하였는지 count하는 것과 같습니다. 따라서 최종 num은 28이 됩니다.
// YYBASIC02_07
#include <iostream>
using namespace std;
int num = 0;
void dfs1(int level)
{
if (level == 3)
return;
//dfs(level + 1);
//dfs(level + 1);
// 위 두 줄의 코드가 같다.
// 따라서 for문을 이용하여 한 줄로 표현해 보고자 한다.
for (size_t i = 0; i < 2; i++)
{
num++;
dfs1(level + 1);
num--;
}
cout << "level : " << level << endl;
}
void dfs2(int level)
{
if (level == 3)
return;
for (size_t i = 0; i < 2; i++)
{
num++;
dfs2(level + 1);
num++;
}
cout << "level : " << level << endl;
}
void main()
{
// 재귀 호출 깊이
// 재귀 호출 너비
dfs1(0);
cout << "value of num after dfs1() : " << num << "\n\n"; // num == 0
dfs2(0);
cout << "value of num after dfs2() : " << num << "\n"; // num == 28
}
'C++ > YYBASIC' 카테고리의 다른 글
| [YYBASIC0209/얌얌코딩] 3차원 배열 (1) | 2025.02.08 |
|---|---|
| [YYBASIC0208/얌얌코딩] 재귀 함수 탐색 경로 기록하기 (1) | 2025.02.07 |
| [YYBASIC0206/얌얌코딩] 재귀함수의 깊이와 너비 (1) | 2025.02.06 |
| [YYBASIC0205/얌얌코딩] cstring 라이브러리 (0) | 2025.02.06 |
| [YYBASIC0204/얌얌코딩] 재귀 함수에 대한 착각과 진실 (0) | 2025.02.05 |