728x90
반응형

문제 : http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=135&sca=10d0

 

JUNGOL

 

www.jungol.co.kr

문제

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
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기