首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

,帮忙看看这个求最大公约数的程序

2012-02-28 
在线等,帮忙看看这个求最大公约数的程序#include iostreamusingnamespacestdintmin(inta,intb){if(a b

在线等,帮忙看看这个求最大公约数的程序
#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 !!

热点排行