Python O(logn)时间复杂度

Python O(logn)时间复杂度,python,time-complexity,Python,Time Complexity,函数powern,p,它接受一个数字和一个幂,并返回提升到给定幂的数字。 此函数必须具有Ologp的复杂性 def power(n,p): if (p == 0): return 1 elif (int(p % 2) == 0): return (power(n, int(p / 2)) * power(n, int(p / 2))) else: return (n * power(n, int(p / 2)

函数powern,p,它接受一个数字和一个幂,并返回提升到给定幂的数字。 此函数必须具有Ologp的复杂性

def power(n,p):

    if (p == 0): return 1
    elif (int(p % 2) == 0):
        return (power(n, int(p / 2)) *
               power(n, int(p / 2)))
    else:
        return (n * power(n, int(p / 2)) *
                   power(n, int(p / 2)))
print(power(2,8))

这是否满足olog n复杂性。我真的不明白logn复杂性是如何工作的

您的代码的重复关系是:

T(p) = 2 * T(p / 2) + O(1)
使用,我们得到Tp=Op。所以,它不是Ologp

要使其成为OPLOGP,您可以执行以下操作:

def power(n, p):
    if p == 0:
        return 1

    # Call this only once, instead of two times.
    power_p_divided_by_2 = power(n, p // 2)

    if p % 2:
        return n * power_p_divided_by_2 * power_p_divided_by_2
    else:
        return power_p_divided_by_2 * power_p_divided_by_2

print(power(2, 8))

此代码的重复关系为:

T(p) = T(p / 2) + O(1)

使用,我们得到了Tp=Ologp。

我真的不明白logn复杂度是如何工作的。你有没有试着弄清楚logn复杂度是如何工作的?@AshvinSharma没有。你介意解释一下吗?不介意。阅读并努力学习一些东西。