我有以下代码片段:
public static boolean sumSearch(int[] a, int n, int x) {
if (n == 0) {
return ( x==0 );
}
return (sumSearch(a, n-1, x-a[n-1]) || sumSearch(a, n-1, x));
所以从我收集的内容来看,第三个参数是否重要?由于返回x == 0对于最坏情况无关紧要,因为n-1是完成的,所以最坏的时间复杂度只能是O(n)?这是正确的思路吗?
答案 0 :(得分:1)
嗯,考虑到这类问题是NP-Complete,我认为我们可以排除O(n)的时间复杂度。我认为这个算法的最坏情况时间为O(2 ^ n)。如果你把这些调用想象成一棵树,那么树的每个“级别”都会有两倍于之前的级别,这当然是O(2 ^ n)。