Python O(logn)时间复杂度
函数powern,p,它接受一个数字和一个幂,并返回提升到给定幂的数字。 此函数必须具有Ologp的复杂性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)
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没有。你介意解释一下吗?不介意。阅读并努力学习一些东西。