【发布时间】:2021-10-01 10:59:00
【问题描述】:
有人能告诉我函数的复杂性是什么吗?为什么? 谢谢
def func1(n):
if n==0:
return (1)
if n==1:
return (1)
if n==2:
return (2)
return (n*func1(n-3))
n=int(input())
func1(n)
我认为复杂度是:“O(nlog n)”
【问题讨论】:
-
对于所有肯定的
ns,循环最多会有n / 3迭代(你有一个尾递归)。然而,这仍然是线性时间 - O(n)。 -
@JanezKuhar,这是不是尾递归(但接近)。最后一个操作不是调用
func1(),而是乘以n。 -
你通常会写
return 1,而不是return (1)。
标签: python function recursion time-complexity complexity-theory