[英]How to trace the recursion of a method from the first method call to the base case in java?
考虑以下代码片段。
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];
}
我如何查看每个方法调用的start和end变量输出以及每个方法调用返回什么?
从索引4到索引7的总和的最终结果是17。
另外,当我传递4和7的int值时,该方法是否考虑4和7或数组的第4和第7个索引值?
根据我的理解,我跟踪每个方法调用,如下所示:1st方法调用开始:4结束:7返回:4 + rangeSum2(array,5,6)+ 7
第二种方法调用的开始:5结束:6返回5 + rangeSum2(array,6,5)+ 6等等...我只是很难知道该方法使用每个递归的值。
第一次调用后,您将对方法使用以下递归:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.