Big o 这个算法';s的复杂性是正确的吗?

Big o 这个算法';s的复杂性是正确的吗?,big-o,asymptotic-complexity,Big O,Asymptotic Complexity,我不理解的算法是: 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

我不理解的算法是:

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=>复杂性为O(n)


如果我错了,请告诉我。谢谢大家!

我在互联网上搜索,该算法的复杂度为O(n+m)。我发布这篇文章是为了帮助其他人。链接是:

此算法计算两个整数的最大除数。例如,如果我考虑m=120,n=75,算法返回15。m是第一个整数,n是第二个整数。如果m=-1,n=1,则递归永远不会结束。我猜你们的数字是正整数,对吧?是的,我忘了说那个了