我有一个名为二进制和的方法
Algorithm BinarySum(A, i, n):
Input: An array A and integers i and n
Output: The sum of the n integers in A starting at index i
if n = 1 then
return A[i]
return BinarySum(A, i, n/ 2) + BinarySum(A, i + n/ 2, n/ 2)
忽略使一个简单的问题变得复杂的事实我被要求找到Big O.这是我的思考过程。对于大小为N的数组,我将进行1 + 2 + 4 .. + N个递归调用。这接近于1到N之和的一半所以我会说它是N(N + 1)/ 4。在进行了这么多次调用后,我需要将它们加在一起。所以我需要再次执行N(N + 1)/ 4次加法。将它们加在一起我们留下N ^ 2作为主导术语。 那么这个算法的大O是O(N ^ 2)吗?或者我做错了什么。有二进制递归并且在最终答案中没有2 ^ n或log n感觉很奇怪