给定函数的复杂度是多少

问题描述

有人可以告诉我函数的复杂性是什么,为什么? 谢谢

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)”

解决方法

该函数的时间复杂度为 O(n),因为 n - 3 是线性的。如果是除法运算,则为 O(logn)。进一步的解释可以参考this

附言与 n 本身的乘法不会影响每个递归调用中的给定参数,因此,它根本不会影响时间复杂度。