需要Euclid算法的递归版本

时间:2013-12-09 16:28:23

标签: algorithm recursion

我有一个任务,我有欧几里德的算法,需要制作它的递归版本。我无法真正得到算法的递归版本,所以任何帮助都将非常感激! :)

给定的算法是:

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

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

这里我假设X> = Y> 0,

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

用于求解最大公约数(GCD)的欧几里德的递归版本算法是(C版):

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