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

本文介绍了欧几里得算法的时间复杂度分析,通过《数据结构与算法C++描述》中的例子,探讨了算法在平均和最坏情况下的迭代次数。在最坏情况下,当两个输入是相邻的斐波那契数时,通过数学归纳法证明了时间复杂度为O(logN)。此外,提到了拉梅定理作为更精确的步数计算公式,并鼓励读者深入学习算法与数学的关系。
最低0.47元/天 解锁文章
811





