Algorithm 以下递归函数的时间复杂度是多少

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;

下面的程序是查找数组的所有子集。程序的时间复杂度是O2^n吗

有什么简单的方法可以找到递归函数的时间复杂度吗

期待中的感谢

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的递归函数