【发布时间】:2015-01-21 11:03:43
【问题描述】:
我正在处理一项任务,在这里我得到了帮助,其中包含我需要的一段代码。该程序运行良好,但只有一部分我不明白。
public class largest_in_array
{
public static void main(String[] args)
{
int array [] = {23,35,67,76,34};
System.out.println("The largest number in the array is: ");
System.out.println(array[largest(array, 0, 0)]);
}
public static int largest(int array[], int maxIndex, int i)
{
int ans = 0;
if(i == array.length-1)
{
ans = maxIndex;
}
else
{
ans = largest(array, (Math.max(array[maxIndex], array[i]) == array[maxIndex]) ? maxIndex : i, ++i);
}
return ans;
}
}
我不明白的部分是这样的:
ans = largest(array, (Math.max(array[maxIndex], array[i]) == array[maxIndex]) ? maxIndex : i, ++i);
似乎 maxIndex 从 0 开始,然后在第三个递归步骤附近获得值 1。我不知道这是怎么发生的,因为 maxIndex 似乎从未在代码中的任何地方递增。
如果我的问题事先令人困惑,我深表歉意。对此的任何解释将不胜感激。
【问题讨论】:
标签: java arrays recursion iteration