Algorithm 需要欧几里得的递归版本';s算法

Algorithm 需要欧几里得的递归版本';s算法,algorithm,recursion,Algorithm,Recursion,我有一个任务,我有欧几里德的算法,需要做一个递归版本。我真的不知道算法的递归版本是什么,所以这里的任何帮助都将不胜感激!:) 给定的算法是: X ← MAX Y ← MIN while (Y != 0){ mod ← X mod Y X ← Y Y ← mod} GCD ← X 递归实际上非常类似于迭代 GCD(X,Y): if Y == 0: return X else: return GCD(Y, X mod Y) 这里我假设X>=Y

我有一个任务,我有欧几里德的算法,需要做一个递归版本。我真的不知道算法的递归版本是什么,所以这里的任何帮助都将不胜感激!:)

给定的算法是:

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

递归实际上非常类似于迭代

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

这里我假设X>=Y>0

本质上,递归是用较小的X'和Y'来解决问题,直到答案明显为止(这里X'=Y和Y'=X%Y)

求解最大公约数(GCD)的欧几里得递归算法为(C版本):


你需要表现出一些努力,用某种编程语言编写它,然后重新标记你的问题,也许有人会回答。递归可以被看作是一种循环机制。因此,考虑如何将带有条件的
while
循环转换为带有基本情况的递归调用在Google中输入递归欧几里德算法并开始阅读。维基百科的文章有一个实现。针对第一条评论,我书中的算法是用伪语言给出的,而不是用编程语言给出的(我不知道它用英语叫什么),因为它是用希腊语写的,所以我尽力翻译它。谢谢大家的帮助!如果
Y==0
您不返回
X
?似乎这只会返回0,因为终止递归的条件是
Y==0返回0
。谢谢,伙计,我现在明白它一直想让我做什么了。无法真正了解递归是什么以及它是如何实现的。再次感谢!
int GCD(X, Y)
{
    if ((X % Y) == 0)
    {
        return Y; 
    }
    else
    {
        return GCD(Y, X % Y);
    }
}