考虑以下代码片段。
public static void main(String[] args){
int[] arrayOfInts = {5, 7, 5, 6, 4, 2, 3, 8, 4, 5, 2, 1, 8};
System.out.println("The result is: " + rangeSum2(arrayOfInts, 4, 7)
}
public static int rangeSum2(int[] array, int start, int end)
{
if (start == end)
return array[start];
else if (start > end)
return 0;
else
return array[start] + rangeSum2(array, start + 1, end - 1) + array[end];
}
如何查看每个方法调用为开始和结束变量输出的内容以及每个方法调用返回的内容?
从索引4到索引7的总和的最终结果是17。
另外,当我传递 4 和 7 的 int 时,该方法是否考虑 4 和 7 还是数组的第 4 个和第 7 个索引值?
根据我的理解,我像这样跟踪每个方法调用:
第一个方法调用
开始: 4
结束:7
返回:4 + rangeSum2(数组, 5, 6) + 7
第二种方法调用
开始: 5
结束:6
返回 5 + rangeSum2(数组, 6, 5) + 6
ETC...
我只是无法知道该方法每次递归使用什么值。
最佳答案
第一次调用后,您对该方法使用以下递归:
rangeSum2(array, start + 1, end - 1)
,意思是:
调用 1:
start = 4, end = 7
通话 2:
start = 5, end = 6 because of rangeSum2(array, 4 + 1, 7 - 1)
调用 3:
start = 6, end = 5 because of rangeSum2(array, 5 + 1, 6 - 1)
最后,你会得到: 4 + 2 + 3 + 8 + 0
关于java - 如何在java中跟踪方法从第一个方法调用到基本情况的递归?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49483055/