我有一个任务,我有欧几里德的算法,需要制作它的递归版本。我无法真正得到算法的递归版本,所以任何帮助都将非常感激! :)
给定的算法是:
X ← MAX
Y ← MIN
while (Y != 0){
mod ← X mod Y
X ← Y
Y ← mod}
GCD ← X
答案 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);
}
}