Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 求和范围的时间复杂度_Python_Time Complexity_Big O - Fatal编程技术网

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这是一个特定于编程的问题,非程序员不会对这个问题感兴趣,因此它显然在堆栈溢出的范围内。我邀请您在这里阅读标记为时间复杂性的其他问题。