gcd 应该是一个递归函数。它应该返回无效。它应该取两个正整数并将 GCD 放在第三个参数中。
这是我编码的 gcd 函数。但是,我意识到它不是递归函数。我将如何更改此代码以使其成为递归函数?
void gcd(int *x, int *y) {
int i;
getValuesForGCD(x, y);
for (i = *x; i >= 1; i--)
{
if (*x % i == 0 && *y % i == 0)
{
printf("The GCD of %d and %d is %d", *x, *y, i);
break;
}
}
}
最佳答案
GCD 自然定义为循环公式。直接转化为递归函数:
gcd(a, 0) = a
gcd(a, b) = gcd(b, a % b)
以 C
格式编写,仅此而已。
关于c - C中的递归。使非递归函数成为递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14897476/