2013-12-09 3 views
-1

나는 유클리드 알고리즘을 가지고 있으며 재귀 버전을 만들어야합니다. 알고리즘의 재귀 버전이 실제로 무엇인지 알 수는 없으므로 여기서 어떤 도움을 주시면 감사하겠습니다! :)유클리드 알고리즘의 재귀 버전이 필요합니다.

주어진 알고리즘이다

X ← MAX 
Y ← MIN 
while (Y != 0){ 
    mod ← X mod Y 
    X ← Y 
    Y ← mod} 
GCD ← X 
+0

:

최대 공약수 (GCD)를 해결하기위한 유클리드의 재귀 버전 알고리즘 (C 버전)입니다 대답 할거야. –

+0

재귀는 루핑 메커니즘으로 볼 수 있습니다. 따라서 조건이있는 while 루프가 기본 case를 가진 재귀 호출로 어떻게 변환 될 수 있는지 생각해보십시오. –

+0

이것은 [recursion] (https://www.google.com/#q=recursion)) – Koryu

답변

2

재귀 실제로 I은 X> = Y> 0

본질적 가정 여기서 반복

GCD(X,Y): 
    if Y == 0: 
    return X 
    else: 
    return GCD(Y, X mod Y) 
+1

'Y == 0'이면'X'를 반환하지 않습니까? 재귀를 종결시키기위한 조건이'Y == 0 return 0'이기 때문에 이것처럼 보인다. – asafreedman

+0

고마워, 나는 이제 내가하고 싶은 일을 이해한다. 재귀가 무엇이고 어떻게 구현되었는지 알 수 없습니다. 다시 한 번 감사드립니다! – user3083578

0

매우 비슷 재귀는 대답이 명백해질 때까지 (X '= Y와 Y'= X % Y) 작은 X '와 Y'로 문제를 해결합니다. 당신은 어떤 프로그래밍 언어를 작성하여 어떤 노력을 보여주고 다음 질문 누군가 태그를 다시 지정할 필요가

int GCD(X, Y) 
{ 
    if ((X % Y) == 0) 
    { 
     return Y; 
    } 
    else 
    { 
     return GCD(Y, X % Y); 
    } 
} 
관련 문제