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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
GCD自然被定义为复发公式.它直接转换为递归函数:
gcd(a, 0) = a
gcd(a, b) = gcd(b, a % b)
Run Code Online (Sandbox Code Playgroud)
以C格式写出来就是这样.