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