如何通过另一个函数多次运行函数时存储一定的值

时间:2012-03-15 01:57:09

标签: java function sorting merge inversion

我的问题是我有两个函数,其中一个函数调用另一个函数,因为它执行了几次(rec),我想保存第四个函数中的值(在我的情况下调用Mergesort) 。我实际上是使用Merge Sort对列表进行排序,但是我很想知道反转的数量,所以我想返回一个int,但我不知道如何存储该值,所以我可以加上所有的值在一起结束以获得反转量(是的,我知道存在O(n ^ 2)算法来找到这个)。我想大部分你都知道MergeSort算法,所以我不打算全部写完,但是从下面的代码中你可能会知道我在寻找什么。如果它没有帮助,那么试着回答我上面解释的问题:)

public ArrayList MergeMerge(ArrayList A, int e, int a){
     s=...;
     MergeMerge(A,e,a);
     MergeMerge(A,e-1,a);
     MergeSort(A,e,r,s);

public ArrayList Mergesort (ArrayList A, int e, int a, int s) {
     ...
     int inversions=0;
     for (....)
         ....
         else {
            ...
            inversions=inversions+(s-i);
            }

1 个答案:

答案 0 :(得分:0)

您可以使用返回值来跟踪此情况。这是一个通用的例子:

int myRecursiveMethod() {

    ...

    // Base case
    if (someCondition) { return 1; }

    // Otherwise
    return myRecursiveMethod() + myRecursiveMethod() + 1;
}


int totalCount = myRecursiveMethod();