最近在看数据结构与算法分析,就把一些自己写的例子贴出来供有需要的人学习学习,其实我也只是个菜鸟,大学期间没好好学数据结构,最近想要给自己加点马力,希望能一起成长。
最大公约数可以理解为两个数的最小数与两个数的差的最大公约数是相等的,求最大公约数的递归实现可以理解为不断的把最小数和差相比较,最后有一个数为零的情况下取另一个值就是为该两个原始数据的最大公约数。
具体代码实现
int function(int a, int b)
{
int num = 0;
if(a < b)
{
num = a;
a = b;
b = num;
}
if(b == 0)
{
return a;
}
else
{
return function(a-b, b);
}
}
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
qDebug() << function(130, 15) << endl;
return a.exec();
}
补充:
书上还有一种更简便的欧几里得算法的方法
int function(int a, int b)
{
while(b != 0)
{
int m = a%b;
a = b;
b = m;
}
return a;
}