c - C中的递归。使非递归函数成为递归函数

标签 c recursion

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/

相关文章:

c - ld : Can't find library for -lc

c - 使用不带循环的递归在 C 中编写程序以获得所需的输出

c++ - cppUnit 在启动每个单元测试时是否使用 fork()?

javascript - 递归 Promise - 有时有效,有时无效

java - 检查整数数组以查看任意两个元素的总和是否等于另一个元素

c - 在 C 中更改 void 指针值的问题

c - C中通过http发送图像

c - 释放整个链表,这个算法正确吗?

recursion - 函数的递归迭代导致堆栈溢出

java - 递归查找给定长度的平方和的顺序