Algorithm 以下递归函数的时间复杂度是多少
下面的程序是查找数组的所有子集。程序的时间复杂度是O2^n吗 有什么简单的方法可以找到递归函数的时间复杂度吗 期待中的感谢Algorithm 以下递归函数的时间复杂度是多少,algorithm,time-complexity,Algorithm,Time Complexity,下面的程序是查找数组的所有子集。程序的时间复杂度是O2^n吗 有什么简单的方法可以找到递归函数的时间复杂度吗 期待中的感谢 public static void getAllSubSet(int[] arr,int[] subset,int index){ if(index == arr.length) printarr(subset); else{ subset[index] = -1;
public static void getAllSubSet(int[] arr,int[] subset,int index){
if(index == arr.length)
printarr(subset);
else{
subset[index] = -1;
getAllSubSet(arr, subset, index+1);
subset[index] = arr[index];
getAllSubSet(arr, subset, index+1);
}
}
public static void printarr(int[] set){
for(int i=0;i<set.length;i++){
if(set[i] != -1){
System.out.print(set[i] +" ");
}
}
System.out.println("");
}
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = {1,2,3};
int[] subset = new int[arr.length];
getAllSubSet(arr, subset, 0);
}
回答你的第一个问题:
函数的复杂性为*2^n。然而,如果n非常大,你可以忽略n
回答你的第二个问题:
我找到的逼近递归算法复杂性的最佳方法之一是绘制递归树。一旦有了递归树,就可以找到复杂性。它不在O2^n中。不可能比Θn2^n做得更好,因为这是输出的大小。@Paulpro是的。。。我的错我忘了打印方法。。。我主要关心的是递归函数。如何在每个递归函数中找到不是像n-1或n-2那样划分的递归函数的时间复杂度我知道什么时候使用masters方法划分像n/2或3n/4的递归函数