java - 递归解释

标签 java recursion

今天在 Java 课上,教授提出了这个例子,但我真的不太明白如何通过这个方法来获得结果 = 4 的过程。任何人都可以将一些行写为尽可能清楚这个方法是如何解决的?谢谢 好的,这就是方法:

public static int mystery(int[] values, int start, int value)
{
    if(start == values.length) {
        return value;
    }
    else
        return Math.max(value, mystery(values, start+1, values[start]));
}

最佳答案

结果不是 4,而是数组中的最大值。

事情是这样的:

values 是元素数组。

start 是当前索引。

value 是当前最大值。

如果当前索引超过数组长度,则返回当前最大值。这是第一行代码和停止条件。

否则,返回当前最大值与当前索引之后的数组最大值之间的最大值。这将递归地最终返回数组中的最大值。

您最初使用 start = 0value = 0 调用此函数。

假设值 = [2,5,1]

mystery ( [2,5,1], 0 , 0 ) ->
  start (0) != values.length (3) ->
  return max (0, mystery( [2,5,1], 1, 2 ) ->
      mystery ( [2,5,1], 1, 2 ) ->
        start (1) != values.length ->
        return max (2, mystery( [2,5,1], 2, 5 ) ->
            mystery ([2,5,1], 2, 5) ->
            start(2) != values.length ->
                return max(5, mystery( [2,5,1], 3, 2) ->
                   start(3) == values.length ->
                   return value (1)
                -> return max(5,1)
            -> return 5
         -> return max(2,5)
       -> return 5
   -> return max(0,5)
-> return 5

关于java - 递归解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9385572/

相关文章:

java - 在文件内计数和编号?

Javascript 通过数组创建对象

java - 递归方法中的后递增?

linux - 了解 NASM 程序集中的递归阶乘函数

python - 在这个算法中实现动态规划?

ruby - 算法/递归树挑战

java.lang.ExceptionInInitializerError 引起的 : com. fastxml.jackson.databind.JsonMappingException : Jackson version is too old 2. 5.1

java - GWT 简单寻呼机帮助

java - 从应用程序获取 Android 通知?

java - 收到此错误没有找到类 org.json.JSONObject 的序列化器,也没有发现创建 BeanSerializer 的属性