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

Leftside 2019. 06. 15.


// 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는 인수가 유지되는게 아닌가요? 궁금합니다

공유하고 보상받기 ♥︎
댓글 0

1개의 답변이 있습니다.

질문자 & 큐레이터 채택
LTEO 답변자인증
데이터분석 2019. 06. 15
100%의 채택

안녕하세요.

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 의 순서가 됩니다.

댓글 0