【发布时间】:2019-03-21 19:24:15
【问题描述】:
这个函数的时间复杂度是多少:
public int calculate(int[] arr, int index) {
int max = 0, sum = 0;
for (int i = index; i < arr.length && i < index + arr[index]; i++) {
sum += arr[i];
max = Math.max(max, calculate(arr, i + 1));
}
return Math.max(max, sum);
}
函数被一个数组和一个索引调用。由于函数对自身进行 arr[index] 递归调用,我们可以说它的时间复杂度是 O(max(arr)^n)('n' 是 arr 中的元素数)吗?是否有可能找到更严格的限制?时间复杂度肯定不是2^n吧?
【问题讨论】:
标签: algorithm recursion time-complexity big-o complexity-theory