繁体   English   中英

如何在Java中从第一个方法调用到基本情况跟踪方法的递归?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM