該程序非常簡單,它提供了最大的公約數作爲輸出。我已驗證了我的算法。編譯器沒有發生錯誤,但仍然是不會產生任何輸出。該代碼在編譯時沒有顯示任何錯誤,但沒有顯示任何輸出
#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