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,则递归永远不会结束。我猜你们的数字是正整数,对吧?是的,我忘了说那个了