读书人

关于欧几里得算法的代码求解释,该怎

发布时间: 2012-05-21 18:04:41 作者: rapoo

关于欧几里得算法的代码,求解释
在网上看到的,应用欧几里得算法求最大公约数,没看懂,求解释

递归版本:
int Euclid(int a,int b)
{
while(a=a%b)a^=b^=a^=b;
return b;
}

迭代版本:
int Euclid(int a,int b)
{
while(a=a%b)a^=b^=a^=b;
return b;
}



[解决办法]
谁写的代码,好像是故意让初学者读不懂,下面是改写过的与楼主等价的代码,顺便说一下,这个代码是循环结构而不是递归。



C/C++ code
int Euclid(int a,int b){  while (1)  {    a= a % b;    if (a==0)    break;    //以下3条语句的功能是交换a,b的值,等价于{int tmp; tmp=a; a=b; b=tmp;}    a^=b;    b^=a;    a^=b;  }  return b;}
[解决办法]
http://www.iflym.com/index.php/datastructure/201204240002.html
证明。自己去看下吧。

读书人网 >C语言

热点推荐