인프런 커뮤니티 질문&답변
다음 코드가 무한루프 도는 이유
작성
·
736
0
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void binary(int num);
int main()
{
int n = 10;
binary(n);
}
void binary(int num) {
int remainder = num % 2;
while(num > 1)
{
binary(num / 2);
}
printf("%d",remainder);
return;
}
이진수 변환을 구현해봤는데 무한루프를 도는 이유를 모르겠어서 질문합니다.
퀴즈
프로그램에서 함수를 사용하는 주된 이유 중 하나는 무엇일까요?
프로그램 실행 속도를 항상 빠르게 만들기 위해
반복되는 코드를 줄이고 재사용성을 높이기 위해
변수를 전역적으로 선언하여 어디서든 접근하기 위해
프로그램의 메모리 사용량을 최소화하기 위해
답변 1
0
재귀 호출을 반복문 안에서 하고계세요..!
이건 제가 말로 설명드리기는 어려운 것 같고 ㅠㅠ 디버깅으로 한단계 한단계 짚어보면 왜 무한 루프인지 감이 오실 것입니다. 반복문 안에서 또 호출하고 새로운 함수의 반복문에서 새로운 함수 또 호출하고... 이런 과정이기 때문입니다.
int main()
{
int n = 10;
binary(n);
}
void binary(int num) {
if (num == 0)
return;
binary(num / 2);
int remainder = num % 2;
printf("%d", remainder);
}
이렇게 하셔야할 것 같아요.





