아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
검은물수리128
검은물수리12819.06.15

c언어 2진수 순환 프로그래밍에서 이렇게 코드를 짜면 왜 역순으로 출력이 되나요?

// 2진수 형식으로 출력

#include <stdio.h>

void print_binary(int x);

int main(void)

{

print_binary(9);

}

void print_binary(int x)

{

if( x > 0 )

{

print_binary(x / 2); // 재귀 호출

printf("%d", x % 2); // 나머지를 출력

}

}

이런식으로 print_binary(x/2) 다음에 printf를 적으면 역순으로 출력이 되고 printf 다음에 print_binary(x/2)을 쓰면 정순으로 출력이 된다는데 왜 그런지 이해가 안가요... x는 인수가 유지되는게 아닌가요? 궁금합니다

55글자 더 채워주세요.
답변의 개수
1개의 답변이 있어요!
  • 안녕하세요.

    print-binary()를 Pb()로 축약해 답변드리겠습니다.

    재귀호출 질문주셨는데요.

    printf가 뒤에있을 경우

    pb(9)

    = pb(4) printf(9)

    =( pb(2) printf(4)) print(9)

    = (( pb (1) printf(2) )print(4)) print(9)

    pb부터 계산하여 2 4 9순이며

    반대로 printf가 앞에 있을 경우

    pb(9)

    = printf(9) pb(4)

    = printf (9) ( printf(4) pb(2))

    = printf (9) (printf(4) (printf(2) pb(1)))

    로써 printf가 먼자 출력되므로 9 4 2 의 순서가 됩니다.