Как сохранить определенное значение при многократном запуске функции через другую функцию - PullRequest
0 голосов
/ 15 марта 2012

Моя проблема в том, что у меня есть две функции, и одна из функций вызывает другую, и поскольку она делает это несколько раз (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 голосов
/ 15 марта 2012

Вы можете использовать возвращаемые значения, чтобы отслеживать это. Вот общий пример:

int myRecursiveMethod() {

    ...

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

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


int totalCount = myRecursiveMethod();
...