我最近开始学习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'会丢弃返回的值。 –