关于欧几里得算法的代码,求解释,该怎么处理
关于欧几里得算法的代码,求解释
在网上看到的,应用欧几里得算法求最大公约数,没看懂,求解释
递归版本:
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;
}
------解决方案--------------------
谁写的代码,好像是故意让初学者读不懂,下面是改写过的与楼主等价的代码,顺便说一下,这个代码是循环结构而不是递归。
在网上看到的,应用欧几里得算法求最大公约数,没看懂,求解释
递归版本:
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
证明。自己去看下吧。