무슨 의도로 코드를 작성하셨는지는 모르겠네요.
일단 재귀함수는 이런식으로 동작할 거 같네요.
n이 들어오는데. n이 10이하면.
(1) 먼저 n을 증가시키고 나서
(2) 재귀함수를 다시 호출하네요.
재귀함수를 R이라고 해 볼게요.
그러면
R(0) ====
n=0. ++연산자로 인해 R(0) 안에 있는 n은 1이 됨.
R(1) ====
n=1. ++연산자로 인해 R(1) 안에 있는 n이 2가 됨.
...
R(9) ====
n=10. ++연산자로 인해 R(9) 안에 있는 n이 10이 됨.
R(10) ====
n이 10이므로 리턴 10.
R(10)이 10을 뱉어낼 때부터가 중요한데요.
R(9)에서, R(9)안에 있는 n이 10이므로 리턴 10이 수행이 되긴 합니다. 즉, if(n==10) 블라블라가 총 2번 수행되고요.
재귀함수에 의해 리턴된 값을 호출한 Caller에서 쓰지 않았으므로, 그건 버려지는 것이지요.
leedh2004 6년 전
우선 간단한 코드를 먼저 예시로 써보겠습니다.
int recursive(int n){
if(n<10)
recursive(++n)
if(n==10)
return n;
return n;
}
int main(){
cout << recursive(0) <<endl;
return 0;
}
이렇게 하면 1이 출력되잖아요??
근데 제 생각대로라면 재귀함수에서 recursive(10)까지 간 뒤, if(n==10)을만나 10 도 반환할텐데
이 반환된 값은 어디로 가는거죠??
10을 반환한뒤에 다시 9로 가서 9반환, 8로 가서 8반환.. 이렇게뒤로가서 마지막으로 1반환될 때 그 값만 반환해주는건가요..?