以下程序出现分段错误。我正在尝试使用递归函数找出 GCD。代码是:
#include<stdio.h>
int gcd(int a, int b)
{
int temp, g, c;
if(a>b)
{
c=a;
a=b;
b=c;
}
//printf("The values of a and b are: %d %d",a,b);
temp = a % b;
if(temp != 0)
{
g = gcd(b, temp);
return(g);
}
if(temp == 0)
g= b;
return g;
}
int main()
{
int a,b;
printf("Enter two numbers: \n");
scanf("%d %d", &a, &b);
printf("The GCD of two numbers you entered are: %d\n", gcd(a,b));
}
我发现的问题在于交换变量。如果我要删除它,那么代码工作正常。谁能告诉我哪里出错了?我正在尝试使用Euclidean algorithm
. 所以没有其他方法可以实现。