首页 > 解决方案 > 函数作为参数与循环时间共性

问题描述

我假设当将一个函数(我们称之为函数 B)作为参数传递给函数 A 时,它不一定添加到函数 A 的 big-O functionA(functionB)len(range(n))

但是如果一个函数在迭代它时被调用,那么它确实会改变 big-o time 共谋。

那么在内置函数上循环不会做同样的事情吗?

这是python中的一个例子:

a=list() # of some array 
for _ in range(a):
     a.count(1)

我没有CS背景,谁能解释一下。

标签: pythonpython-3.xtime-complexitybig-o

解决方案


我不完全确定“将函数”传递给函数 B 是什么意思,除非你的意思是使用装饰器......无论如何,如果你在另一个函数中调用一个函数,可以安全地假设你将不得不考虑嵌套函数的时间复杂度。例如,如果我创建一个函数:

def funcA(i_max, j_max):
    for i in range(i_max):
        for j in range(j_max):
            print("aaaaaaaah")

它具有复杂性O(i_max * j_max),然后我制作另一个功能:

def funcB(k_max):
    for k in range(k_max):
        funcA(some_i, some_j)

那么自然 funcB 将具有复杂性O(k_max * some_i * some_j)——因此您必须考虑其他函数的大 O。


推荐阅读