该程序非常简单,它提供了最大的公约数作为输出。我已验证了我的算法。编译器没有发生错误,但仍然是不会产生任何输出。该代码在编译时没有显示任何错误,但没有显示任何输出
#include<conio.h>
#include <stdio.h>
int gcd(int ,int);
int main()
{
int a,b,j;
printf("enter two numbers");
scanf("%d\n",&a);
scanf("%d\n",&b);
j=gcd(a,b);
printf("gcd is %d",j);
getch();
return 0;
}
int gcd(int x, int y)
{
int temp,c;
if(x<y)
{
temp=x;
x=y;
y=temp;
}
if(y<=x&&(x%y==0))
return y;
else
{ temp=x%y;
c=gcd(y,temp);
return c;
}
}
供参考:通常情况下,如果你有'X> y'上的条目,那么第一次迭代(递归调用)解决了这个问题,所以您不必为特殊情况。另外,一般来说,您将使用迭代算法而不是尾递归算法。 (您是否猜测过GCD(34533,1279)== 1279?也不是我!)另外,'scanf(“%d \ n”,&var)'操作应该被错误检查并且最后的'\ n'意味着您必须在输入终止之前在第二个数字后输入一些非空格字符。 – 2012-01-01 23:26:30
@ Karanv.10111关于'scanf'和'\ n'你可以在clc中阅读这个问题常见问题解答http://c-faq.com/stdio/scanfhang.html – ouah 2012-01-01 23:44:59