로그인 바로가기 하위 메뉴 바로가기 본문 바로가기
난이도
입문

모두를 위한 컴퓨터 과학 (CS50 2019)

임시 이미지 David J. Malan (데이비드 J. 말란)
http://www.boostcourse.org/cs112/forum/48989
좋아요 15504 수강생 34435
void draw(int h)
{
    // 높이가 0이라면 (그릴 필요가 없다면)
    if (h == 0)
    {
        return;
    }

    // 높이가 h-1인 피라미드 그리기
    draw(h - 1);

    // 피라미드에서 폭이 h인 한 층 그리기
    for (int i = 0; i < h; i++)
    {
        printf("#");
    }
    printf("\n");
}

안녕하세요. 재귀부분에서 궁금한 점이 생겨 질문 드립니다. 

코드중 11라인의 

draw(h-1); 이부분에서 궁금증이 생겼습니다.


h가 10일경우 draw 함수가 돌아가는 것을 저는 이렇게 이해하였는데요.


draw(10-1); 

for문에 h가 10 으로 들어가서 #이 10개 찍힘


draw(9-1);

 for문에 h가 9로 들어가고 #이 9개 찍힘

...

.


이런식으로 계속 

나중엔


draw(1-1);

for문에 h가 1


이런 방식으로 돌아가는것이 맞는지 .... 잘 모르겠어서 질문 드립니다!!!!!

함수가 재귀일때 동작하는 순서가 궁금합니다.!!!