我的问题是我有两个函数,其中一个函数调用另一个函数,因为它执行了几次(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);
}
答案 0 :(得分:0)
您可以使用返回值来跟踪此情况。这是一个通用的例子:
int myRecursiveMethod() {
...
// Base case
if (someCondition) { return 1; }
// Otherwise
return myRecursiveMethod() + myRecursiveMethod() + 1;
}
int totalCount = myRecursiveMethod();