前言 |
这个问题是在《数据结构与算法C++描述(第三版中文)》所遇到的,文中给出的迭代次数O(logN)的结果就像是教授所说的“显然”一样高深莫测,有点云里雾里的感觉!在“网罗”了一些资料后,在这里找到了自己想要的答案,笔者接下来就结合自己的理解列出文章中的求解过程。
数学是科学的“皇后” |
在前言中提到那本书中也明确指出了欧几里得算法在实现过程理解上可能不是很难,但是想要得出其在平均情况下的性能需要大量的高度复杂的数学运算分析,书中给出了一个最终的迭代平均次数结果:
次数n = (12 * ln2 * lnN) / π ^ 2 + 1.47 (N为其中较小的那个数)
所以后面就只是考虑一个最坏的情况:M、N(M > N)是两个相邻的斐波那契数,程序是这样的(来源于该书):
long gcd( long m,