ㅁㅁㅁ인터넷 뒤적거리고, 책정독해서 깨닳은건데..
제가 올바르게 생각하고 있는건가요?
그냥 (그래..맞아 or 아닌데..이유는 생략하겠다)로 대답좀 해주시면 진짜 감사할것같습니다.
네이버에 올렸는데, 지식인 형들이 안가르쳐줘요..ㅠ

#include <iostream>
using namespace std;

void whileN(int n);

int main()
{
   whileN(3);
  
   system(\"PAUSE\");
   return 0;
}
  
void whileN(int n)
{
   cout<<\"a = \"<<n<<endl;
   if(n<=0)
   return;

   whileN(n-1);
   cout<<\"c = \"<<n<<endl;
}

출력:3 2 1 0 1 2 3 (물론 한줄에 숫자하나씩 나오지만, 편의상 한줄에 적음)

 

/*

1.메인에서 whileN(3)을 부릅니다.

2.whileN(3)
cout<<\"a = \"<<n<<endl;  //여기서 3출력합니다
if(n<=0) //해당사항없으니 넘어갑니다
return;
whileN(n-1); //매개변수 2로해서 처음으로 갑니다
cout<<\"c = \"<<n<<endl; //이놈(3)은 일단 대기합니다. whleN(2)부터 해결하고 봅니다.

3.whileN(2)
cout<<\"a = \"<<n<<endl;  //여기서 2출력합니다
if(n<=0) //해당사항없으니 넘어갑니다
return;
whileN(n-1); //매개변수 1로해서 처음으로 갑니다
cout<<\"c = \"<<n<<endl; //이놈(2)은 일단은 대기합니다. whleN(1)부터 해결하고 봅니다.

4.whileN(1)
cout<<\"a = \"<<n<<endl;  //여기서 1출력합니다
if(n<=0) //해당사항없으니 넘어갑니다
return;
whileN(n-1); //매개변수 0로해서 처음으로 갑니다
cout<<\"c = \"<<n<<endl; //이놈(1)은 일단은 대기합니다. whleN(0)부터 해결하고 봅니다.

5.whileN(0)
cout<<\"a = \"<<n<<endl;  //여기서 0출력합니다
if(n<=0) //걸려들었습니다 return맞고, whileN(n-1)뒤로 이동합니다. 이시점에 n=1입니다
return;
whileN(n-1);//아까 return때문에 이놈은 패스됩니다. 따라서 n은 계속 1입니다.
cout<<\"c = \"<<n<<endl; //1출력합니다. 대기타고 있던 2출력합니다. 대기타고 있던 3출력합니다. 다 나왔으니 끝납니다.
*/

 

질문1)이렇게 이해하면 되는걸까요?

질문2)대기타고 있는 애들이 저장되는 부분이 스텍이라고 부르는 곳이 맞습니까?