递归和非递归方法实现辗转相除法

来源:互联网 发布:mac电脑flash过期 编辑:程序博客网 时间:2024/06/07 16:44

一、辗转相除法的概念

辗转相除法又名欧里几何法,可以用来求解两个数的最大公约数。它的定义是两个正整数a和b(a>b),它们的最大公约数等于a除以b的余数c和b之间的最大公约数。就是说13和10的最大公约数等于3和10的最大公约数。
本文主要讨论递归和非递归方法实现辗转相除法。

二、递归解决方法

int  gcd(int x,int y){return (!y)?x:gcd(y,x%y);}

输入两个参数x>y,可以求得最终结果。

三、非递归解决方法

int  gcd(int x,int y){int a=0;    while(y){    a=x%y;    x=y;    y=a;    }    return x;}

四、总结

辗转相除法的关键在于要读懂该算法的含义,只有真正读懂含义,才能不变应万变。



阅读全文
0 0