Java 如何分析该程序中所有递归调用的控制流?

Java 如何分析该程序中所有递归调用的控制流?,java,Java,如何分析所有递归调用的流控制? 我使用Netbeans并调试程序,但由于我们必须决定是跨过还是跨入,我希望这是自动完成的,以了解整个控制流程 static int [] MergeSortt(int [] A2) { if(A2.length<=1) { return A2; } int mid=A2.length/2; int [] left; int[] right; int [] result; left= new int [mid];

如何分析所有递归调用的流控制? 我使用Netbeans并调试程序,但由于我们必须决定是跨过还是跨入,我希望这是自动完成的,以了解整个控制流程

static int [] MergeSortt(int [] A2)
{
    if(A2.length<=1)
    {
    return A2;
    }
int mid=A2.length/2;    
int [] left;
int[] right;
int [] result;

left= new int [mid];

    if(A2.length%2==0)
    {
        right= new int[mid];
    }
    else
    {
        right = new int [mid+1];
    }

    result = new int[A2.length];

    for(int i=0;i<mid;i++)
    {
        left[i]= A2[i];
    }
    int x=0;
    for(int j=mid;j<A2.length;j++)
    {
        if(x<A2.length)
        {
            right[x]= A2[j];
            x++;
        }
    }
    left =MergeSortt(left);
    right=  MergeSortt(right);

    result = merge(left,right);

    return result;
}
static int[]MergeSortt(int[]A2)
{

如果(A2.length我会说理解它的最好方法是通过在你的头脑中重新产生流动;)

但如果这对您不起作用,那么我建议使用某种记录器或System.out.println()。这将是最简单的方法,因为它将按照自动执行的顺序记录/打印。通过一些良好的解释性消息,您可以轻松理解它,甚至自动分析它,因为它始终具有相同的结构


您可以从Java获取stacktrace,也可以使用调试器手动执行,但这对您和分析工具来说都比较困难。通过记录或打印,您可以将其设置为您喜欢的良好的人机可读格式。

StackTraceeElement[]elements=Thread.currentThread().getStackTrace();您可以分析调用堆栈