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

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

2012-05-21 
关于欧几里得算法的代码,求解释在网上看到的,应用欧几里得算法求最大公约数,没看懂,求解释递归版本:int Eu

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

递归版本:
  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
证明。自己去看下吧。

热点排行