关于网友提出的“ 关于欧几里得算法的代码,求解释”问题疑问,本网通过在网上对“ 关于欧几里得算法的代码,求解释”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 关于欧几里得算法的代码,求解释
描述: 在网上看到的,应用欧几里得算法求最大公约数,没看懂,求解释
递归版本:
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;
}
解决方案1: 谁写的代码,好像是故意让初学者读不懂,下面是改写过的与楼主等价的代码,顺便说一下,这个代码是循环结构而不是递归。
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;
}
解决方案2: http://www.iflym.com/index.php/datastructure/201204240002.html
证明。自己去看下吧。
以上介绍了“ 关于欧几里得算法的代码,求解释”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2660728.html