728x90
반응형
문제 : http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=135&sca=10d0
문제
100만 이하의 자연수 N을 입력받아 짝수이면 2로 홀수이면 3으로 나누는 작업을 반복하다가 그 값이 1이 되면 그때까지 나누었던 작업의 횟수를 출력하는 프로그램을 재귀함수로 작성하시오.
입력 예
100
출력 예
6
Hint!
100 → 50 → 25 → 8 → 4 → 2 → 1 횟수(level)도 함께 전달하고 n이 1이면 level을 출력하면 된다. 함수(n/2 또는 n/3 level+1)
코드 :
#include <stdio.h>
int level;
int number(int num);
int main()
{
int num;
scanf("%d",&num);
printf("%d",number(num));
}
int number(int num)
{
if(num == 0)
return 0;
if(num == 1)
return level;
if(num%2==0)
{
level++;
return number(num/2);
}
else if(num%2 !=0)
{
level++;
return number(num/3);
}
}
728x90
반응형
최근댓글