//如标题所示,我需要在int //数组中找到最大值的索引,所有这些都需要在一个方法中完成,这就是我的帮助器//方法到目前为止的样子< / p>
它只返回数组中的最后一个索引我可以轻松返回最大值,但我无法弄清楚如何返回该值的索引
//这是辅助方法
private int recursiveGetIndexOfLargest( int[] list, int count )
{
int index;
int[] y = list;
int temp = count - 1;
if( count > 0 )
{
index = Math.max( list[list.length - 1], list[temp] );
for(int x = 0; x < y.length; x++)
{
if(y[x] == index)
{
return x;
}
}
return recursiveGetIndexOfLargest(list, temp);
}
else
{
return -1;//empty list
}
}
这是调用帮助程序的方法
public int getIndexOfLargest()
{
return recursiveGetIndexOfLargest(list, count);
}
答案 0 :(得分:1)
试试这个:
int recursiveGetIndexOfLargest(int[] list, int count)
{
if (count == list.length - 1) return count;
int index = recursiveGetIndexOfLargest(list, count + 1);
return list[count] > list[index] ? count : index;
}
int[] arr = {1, 5, 2, 3, 0};
System.out.println(recursiveGetIndexOfLargest(arr, 0));
答案 1 :(得分:0)
int findLargestIndex(int[] array, int currentPos, int currentLargestIndex)
{
if(currentPos == array.length)
return currentLargestIndex;
if(array[currentPost] > array[currentLargestIndex]
return findLargestIndex(array,currentPos+1, currentPos);
else
return findLargestIndex(array,currentPos+1, currentLargestIndex);
}
它实际上是递归完成的O(n)循环。 你这样开始:
int result = findLargestIndex(array,0,0);
这会有效,但会改变数组。
void findLargestIndex(int[] array, int currentPos)
{
if(currentPos == array.size()) return;
array[0] = (array[currentPos] < array[currenPos + 1] ? currentPos + 1 : currentPos;
findLargestIndex(int[] array, currentPos + 1);
}
最大的索引将存储在数组[0](这会改变数组)。
您只需启动该功能:
findLargestIndex(array,0);
答案 2 :(得分:0)
谢谢tomse !!!!!!!!
参数count实际上是数组的大小,所以我稍微改了一下
private int recursiveGetIndexOfLargest( int[] list, int count )
{
int index;
int temp = count - 1;
if( temp == 0 )
{
return temp;
}
else
{
index = recursiveGetIndexOfLargest(list, temp);
return list[temp] > list[index] ? temp : index;
}
}
现在它工作了,我浪费了几个小时失败