【发布时间】:2018-06-14 09:29:20
【问题描述】:
我不明白的算法是:
alg(m, n)
1. if m>n then
2. return alg(m-n, n)
3. else
4. if n>m then
5. return alg(n, m)
6. else
7. return n
我认为递归公式是T(m) = T(m-n) + a,其中a是一个常数。我试着做一个替换:
T(m) = T(m-k) + a*n
假设
k=m => T(m) = T(0) + a*n => T(m) = n*a + 1 => The complexity is O(n)。
如果我错了,请告诉我。谢谢!
【问题讨论】:
-
这个算法计算两个整数的最大除数。例如,如果我考虑 m = 120 和 n = 75,则算法返回 15。m 是第一个整数,n 是第二个整数。
-
如果 m = -1, n = 1 则递归永远不会结束。我猜你的数字是正整数,对吧?
-
是的,我忘了说
标签: big-o asymptotic-complexity