在线等,帮忙看看这个求最大公约数的程序
#include <iostream>
using namespace std;
int min(int a,int b)
{
if(a <b)
return a;
else
return b;
}
int max(int a,int b)
{
if(a < b)
return b;
else
return a;
}
int GCD(int a,int b)
{
if(min(a,b)==1)
return min(a,b);
if(min(a,b) == 0)
return max(a,b);
else
GCD(min(a,b),max(a,b)%min(a,b));
}
int main()
{
int a = GCD(3,4);
cout < < a < < endl;
system( "pause ");
return 0;
}
为什么算的结果不正确!在线等
[解决办法]
else
return GCD(min(a,b),max(a,b)%min(a,b));
[解决办法]
int GCD(int a,int b)
{
if(min(a,b)==1)
return min(a,b);
if(min(a,b) == 0)
return max(a,b);
else
return GCD(min(a,b),max(a,b)%min(a,b)); //不要漏了这个 return !!!
}
注意 GCD 函数是递归调用,
在最低层的
if(min(a,b)==1)
return min(a,b);
if(min(a,b) == 0)
return max(a,b);
这两个可能的返回后,不是返回给main的,
是返回给上一层的 GCD 递归,所以,你需要把这个值再往上传递,直到传递给main !!