我是一个算法beginner.I刚刚制定了一个解决方案,“递归找到整型数组的最大元素”查找数组中的最大元素:使用递归
public static int findMax(int[]arr)
{
if(arr.length==1)
return arr[0];
return findMax(Arrays.copyOf(arr, arr.length-1))> arr[arr.length-1]?findMax(Arrays.copyOf(arr, arr.length-1)):arr[arr.length-1];
}
我做了多次测试,它似乎正常工作。
然而,我发现有人使用其他的递归方法解决了这个问题太喜欢在这个岗位:
finding max value in an array using recursion java
他的代码如下:
int largest(int[] a, int start, int largest)
{
if (start == a.length)
return largest;
else {
int l = (a[start] > largest ? a[start] : largest);
return largest(a, start + 1, l);
}
我在这里停留在本质在我们的思维方式上存在这个问题的差异。我的想法如下:
1.he使用另一个参数“start”来保持trac当前游标的k在每次递归中都是数组元素,我没有使用它,因为我在每次递归中将数组缩小1,并始终使用尾部元素进行比较;
2.he使用另一个参数“最大”来跟踪到目前为止发现的最大值。我没有在我的代码中使用这个,但我没有使用它。而这实际上就是我卡住的地方。我没有使用那个“最大的”变量来跟踪每次迭代中的最大值,为什么我可以达到相同的结果?
任何帮助,非常感谢!
在此任务中复制阵列代价昂贵且不必要。 – 2014-09-24 06:26:32