Java 如何分析以下代码的时间复杂度?

Java 如何分析以下代码的时间复杂度?,java,algorithm,time-complexity,Java,Algorithm,Time Complexity,是O(n^6)还是O(n!) 试着这样做: private static int ord = 1; public boolean isScramble(String s1, String s2) { boolean b = isScramble(s1, 0, s1.length(), s2, 0); System.out.println("The order is: " + [insert your classname here].ord); return b; }

O(n^6)
还是
O(n!)


试着这样做:

private static int ord = 1;

public boolean isScramble(String s1, String s2) { 
    boolean b = isScramble(s1, 0, s1.length(), s2, 0);
    System.out.println("The order is: " + [insert your classname here].ord);
    return b;
}

private static boolean isScramble(String s1, int begin1, int end1, String s2, int begin2) { 
ord++;
final int length = end1 - begin1;
然后用增加的字符串大小(n)运行它,并记下ord是如何随着n的增加而增加的。这将为您提供正确的O表示法。基本上,您只需计算递归函数被调用的次数

T(1) = 1
T(n) = (T(1) + T(n-1)) * 2 + (T(2) + T(n-2)) * 2 + ....
     =~ T(1) + T(2) + ... + T(n-1)
private static int ord = 1;

public boolean isScramble(String s1, String s2) { 
    boolean b = isScramble(s1, 0, s1.length(), s2, 0);
    System.out.println("The order is: " + [insert your classname here].ord);
    return b;
}

private static boolean isScramble(String s1, int begin1, int end1, String s2, int begin2) { 
ord++;
final int length = end1 - begin1;