Python 求和范围的时间复杂度
我有以下函数,它计算从Python 求和范围的时间复杂度,python,time-complexity,big-o,Python,Time Complexity,Big O,我有以下函数,它计算从a到b的所有数字之和。我想知道如何找到它的时间复杂性(不使用主定理)。我很想得到一个直观的解释,以及如何处理这样的问题 def sum_func(a, b): if a == b: return a mid = (a+b) // 2 return sum_func(a, mid) + sum_func(mid+1, b) Sayn是范围的大小,即要加在一起的数字量。将这些数字想象为a的叶子,其中树中的每个节点表示一个子范围,当调用
a
到b
的所有数字之和。我想知道如何找到它的时间复杂性(不使用主定理)。我很想得到一个直观的解释,以及如何处理这样的问题
def sum_func(a, b):
if a == b:
return a
mid = (a+b) // 2
return sum_func(a, mid) + sum_func(mid+1, b)
Say
n
是范围的大小,即要加在一起的数字量。将这些数字想象为a的叶子,其中树中的每个节点表示一个子范围,当调用该函数对该节点的子范围求和时,它会进行两次递归调用,由该节点在二叉树中的两个子节点表示
具有
n
叶子的二叉树具有2*n-1
节点,每个节点表示一个递归调用,因此递归函数被称为O(n)
次。每次调用函数时,它都会执行O(1)
操作和递归调用;因此,所做的全部工作是O(n)
这个问题独立于具体的编码,因此不适合提出这样的问题Question@YannickFunk这是一个特定于编程的问题,非程序员不会对这个问题感兴趣,因此它显然在堆栈溢出的范围内。我邀请您在这里阅读标记为时间复杂性的其他问题。