C语言 if(!a || !b) return a + b

int gcd(int a, int b)
{
if (!a || !b) return a + b;
if (a > b) return gcd(b, a % b);
return gcd(a, b % a);
}这一段是什么意思

int gcd(int a, int b)
{
if (!a || !b) return a + b; //如果!a或!b不为0,即a或b为0,返回数值a+b
if (a > b) return gcd(b, a % b); //如果a、b均不为0(不满足上一个if语句才能进行这个语句)且a>b,返回gcd(b, a % b) (a % b表示a除以b的余)
return gcd(a, b % a); //如果a、b均不为0且a<=b(即不满足以上两个if语句),返回gcd(a, b % a)
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-08
这是一个递归函数
跳出条件是:a b中有一个为0,就返回a+b

当a>b gcd(b, a % b);
当a<=b gcd(a,b%a) 这是保证大数放在第一个参数上

没说错的话,这是欧几里德求最大公约数的算法吧,你可以根据算法的说明再看程序代码,就会明白。
告诉你一个看这种代码的方法:
选两个不同的整数,然后设置断点,或者用笔记录,跟踪代码运行的过程,你就会发现,运行的具体过程和真正的目的!
第2个回答  2010-07-08
int gcd(int a, int b)
{
if (!a || !b) return a + b;//a b中有一个为0,就返回a+b
if (a > b) return gcd(b, a % b);//这里是a,b都不为0的情况下,递归调用gcd.
return gcd(a, b % a);
}本回答被提问者采纳

C语言 if(!a || !b) return a + b
{ if (!a || !b) return a + b; \/\/如果!a或!b不为0,即a或b为0,返回数值a+b if (a > b) return gcd(b, a % b); \/\/如果a、b均不为0(不满足上一个if语句才能进行这个语句)且a>b,返回gcd(b, a % b) (a % b表示a除以b的余)return gcd(a, b % a); ...

C语言中“if(!a)”表示什么意思?
if( !a )就是一个判断语句,判断表达式 !a 的真假,进而决定是否执行后续操作。如果a是一个变量 当a等于0时,!a=1(为真),执行后续操作;当a不等于0时,!a=0(为假),不执行后续操作;如果a是一个表达式 将表达式的值计算出来,当成变量来操作,判断过程同上。

C语言if(!a)是什么意思?
检测a的值,如果a是0,那么!a就为非零,非零就成立,那么就会执行if内的语句,反之如果a不为0,那么!a就为0,即不成立,就不会执行if内的语句

if (!a)什么意思。下面的题怎么理解?
② !在C语言里是“非”的意思, 就是取逻辑反的操作。那么if (!a)就成了判断“非a”的真假, 也就是a如果是非,那么!a是真。③ 在C里面, 一般定义0是逻辑假,即FALSE;而非0即逻辑真,即TRUE。 因此,这里a=0, 那么!a就是真,因此程序执行顺序是printf("a is False\\n"); 所以屏...

C语言。函数返回值return是不是必须在函数的末尾。
不是啊,原则上只要在函数体内都可以。但是一旦执行,就退出了整个函数体。例如:int max(int a, int b){ if(a>b) return a; else return b;} 函数max返回整数a,b中较大的一个。

c语言中if(!a)表示什么意思?
当“表达式”的值不等于0(即判定为“逻辑真”)时,则执行语句组1,然后转向下一条语句;否则,执行语句组2。如图4-1(b)所示。3.if语句的嵌套与嵌套匹配原则 if语句允许嵌套。所谓if语句的嵌套是指,在“语句组1”或(和)“语句组2”中,又包含有if语句的情况。if语句嵌套时,else子句与if的...

(c语言)输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符...
returnb;} } charmin(chara,charb){ if(a<b){ returna;} else { returnb;} } intmain(intargc,charconst*argv[]){ charc0,c1,c2,c3,c4,c5,c6,c7;printf("Pleaseinputnum:\n");scanf("%c%c%c",&c0,&c1,&c2);c3=max(c0,c1);c4...

谁会用C语言 写“定义函数返回两个数中较大的数,在主函数中调用并输出...
<stdio.h> int maxnum(int a, int b){ if(a>b)return a;else return b;} int main(){ int i,j;printf("请输入两个整数:\\n");scanf("%d %d",&i,&j);printf("较大的数是:%d\\n",maxnum(i,j));return 0;} 请输入两个整数:4 9 较大的数是:9 请按任意键继续. . ....

C语言中return用法?(请熟练者进)
if(b > c) { return printf("最大值为%d", a);} } \/\/ 这里的其他代码将不会被执行,因为return已经结束了当前函数的执行 } return的巧妙使用需要开发者在实践中不断探索和理解。它不仅仅是一个简单的返回值,更是控制程序流程的关键手段。熟练掌握return的用法,能使你的C语言编程更加高效和...

c语言 if(!a&&b) 是先!a,还是!(a&&b)
C中!的优先级比&&高,没有打括号就是先!a(处理最近的变量)。宏中也有类似情况。

相似回答
大家正在搜