我最近開始學習C和編程,最近我們被告知要製作一個程序,使用遞歸找到兩個數的GCD和LCM。C遞歸函數 - GCD
現在經過一番磨練,我設法把它們合在一起。
#include<stdio.h>
int gcd(int a,int b);
int main()
{
int a,b,l,temp;
printf("Enter two numbers :\n");
scanf("%d%d",&a,&b);
if(a<b)
{
temp=a;
a=b;
b=temp;
}
l=gcd(a,b);
printf("GCD = %i\nLCM = %i",l,a*b/l);
return 0;
}
int gcd(int a,int b)
{
static int c;
c=a%b;
a=b;
b=c;
if(c!=0)
{
gcd(a,b);
}
else
return a;
}
現在由於某種原因,我不知道,該功能不工作沒有「其他」。更特別的是這樣的:
int gcd(int a,int b)
{
static int c;
c=a%b;
a=b;
b=c;
if(c!=0)
{
gcd(a,b);
}
return a;
}
儘管與作業無關,我覺得我應該明白這裏的問題是什麼。作爲新手,我會感謝任何和所有的幫助。
如果問題太愚蠢或代碼太雜亂,請提前道歉。
爲什麼遞歸函數「static」中的局部變量?他們不應該。 –
'if(c!= 0)'分支不返回值。 –
並且調用'gdc'會丟棄返回的值。 –