Recursion 在这种递归算法中,如何计算大O复杂度?

Recursion 在这种递归算法中,如何计算大O复杂度?,recursion,big-o,complexity-theory,Recursion,Big O,Complexity Theory,下面的递归代码用于计算对给定数字求和的可能方式 投入:4 输出: 1111 112 121 112 22 13 31 4. 有8(2^(n-1))种不同的方法获得4 我想知道这个算法的最大O复杂性是什么?我欣赏处理递归算法的基本思维过程。还有一个问题,为什么方法的数量是2^(n-1)?我无法从算法中看出这一点。非常感谢你们 public static int recursive(int n, String out){ int count=0; if (n==0) {

下面的递归代码用于计算对给定数字求和的可能方式

投入:4

输出: 1111 112 121 112 22 13 31 4. 有8(2^(n-1))种不同的方法获得4

我想知道这个算法的最大O复杂性是什么?我欣赏处理递归算法的基本思维过程。还有一个问题,为什么方法的数量是2^(n-1)?我无法从算法中看出这一点。非常感谢你们

    public static int recursive(int n, String out){

    int count=0;

    if (n==0) {
        System.out.println(out);
        return 1;
    } else if (n>0) {

        for (int i=1; i<=n; i++){
            count+=recursive(n-i, out+" "+Integer.toString(i));
        }

        return count;
    } else {
        return 0;
    }
}
publicstaticintrecursive(intn,stringout){
整数计数=0;
如果(n==0){
System.out.println(out);
返回1;
}否则,如果(n>0){
对于(inti=1;iBigO(order of)复杂度可能是一个有点松散的术语。它用于算法性能的缩略图估计

如果你看一下你给出的代码,你可以开始想象代码不是递归的。在这种情况下,算法的顺序是n(主for循环)。递归函数每次调用n次(n-1)!(n-1阶乘)次(n-1..0)。所以在我看来,你得到的是

O(n(n-1)!=>O(n!)

这是发生多少字符串附加操作的缩略图(main for循环的内容,这是代码正在做的主要事情)