본문 바로가기
Do it 알고리즘 입문[C]

재귀 알고리즘 실습 - 최대공약수 구하기

by 횰임 2022. 1. 22.

✅해결 과정

1. x가 큰 값, y가 작은 값이라고 가정

2. x%y == 0 만족하면 최대 공약수는 x임 --종결 조건

3. x%y != 0 이면 작은 값(y)를 다시 x%y로 나누어 줌 (이 과정에서 y가 큰 값, x%y가 작은 값으로 바뀜)

4. 나누어 떨어질 때까지 과정 재귀적 반복

 

최대공약수 구하는 함수를 gcd(x, y)라 하면

3번을 위해 gcd(y, x%y) return하게 함(y를 큰 쪽(왼 쪽), x%y를 작은 쪽(오른 쪽)으로) 

 

🔺어떤 두 수가 와도 작은 값이 오른쪽 파라미터쪽이 됨 (ex.gcd(6, 10)-->gcd(10, 6))

 

✅코드

/*최대공약수 구하기*/
#include <stdio.h>

int gcd(int x, int y)		
{
  if(y==0) return x;		
  return gcd(y, x % y);
}
int main(void) {
  int x, y;
  printf("두 정수를 입력: ");
  scanf("%d %d", &x, &y);
  printf("두 수의 최대공약수 : %d\n",gcd(x, y));
  return 0;
}

'Do it 알고리즘 입문[C]' 카테고리의 다른 글

단순 선택 정렬, 단순 삽입 정렬, 셸 정렬  (0) 2022.02.03
버블 정렬  (0) 2022.01.31
스택 실습  (0) 2022.01.21
스택 & 스택 구현하기  (0) 2022.01.21
헤더파일에 #ifndef  (0) 2022.01.21