gpt4 book ai didi

谁能解释这个递归函数我不明白它如何返回任何东西?

转载 作者:行者123 更新时间:2023-11-30 19:03:39 24 4
gpt4 key购买 nike

我不明白这个递归函数是如何计算gcd的,有人能详细解释一下这个递归函数如何返回gcd吗?

#include <stdio.h>

long gcd(long, long);

int main() {
long x, y, hcf, lcm;

printf("Enter two integers\n");
scanf("%ld%ld", &x, &y);

hcf = gcd(x, y);
lcm = (x*y)/hcf;

printf("Greatest common divisor of %ld and %ld = %ld\n", x, y, hcf);
printf("Least common multiple of %ld and %ld = %ld\n", x, y, lcm);

return 0;
}

long gcd(long a, long b) {
if (b == 0) {
return a;
}
else {
return gcd(b, a % b);
}
}

最佳答案

您可以在这里阅读有关此算法的信息:Euclidean algorithm

基本上,如果

a == bq + r

何时 r是除法的余数 a通过b (所以0 <= r < b)

然后

gcd(a, b) == gcd(b, r)

请注意a%b余数是 r 。因此,您可以使用递归来计算 gcd(a, b)

r == 0 ,这意味着a == bq ,或者 b划分a 。因此,ba, b 的最大公约数,也适用于原件a, b 。此时递归调用将保持 ba0b ,所以它的返回 a .

希望这个解释涵盖了所有内容

关于谁能解释这个递归函数我不明白它如何返回任何东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53609658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com