我是编程新手,只是一名学生。
我编写了一个程序来使用递归函数计算两个数字的 GCD,但它给出了一些正确的答案,而它给出了一些错误的答案。请帮助我确定问题:
#include<stdio.h>
#include<conio.h>
int gcd(int,int,int)
int main(){
int a,b,x,val;
printf("Enter the first number: ");
scanf("%d",&a);
printf("Enter the second number: ");
scanf("%d",&b);
if(a>b)
x=b;
else
x=a;
val=gcd(a,b,x);
printf("The GCD of the two numbers you entered is:%d",val);
getch();
return 0;
}
int gcd(int a,int b,int x){
if(a%x==0){
if (b%x==0)
return x;
}else
return gcd(a,b,x-1);
}
例如,当第一个数字 = 69,第二个数字 = 65 时,程序给出了错误的答案,而在其他一些情况下,它神秘地给出了正确的答案。
有人可以帮我吗?