【发布时间】:2018-01-10 17:00:58
【问题描述】:
所以我遇到了在数组中找到 2 个最小数字的问题,但我必须使用递归(递归部分是本练习的一部分)。 我开始思考如何去做,我试图做的“计划”是这样的,首先找到数组中最小的,然后标记我找到它的位置,然后将数组分成两组并搜索这 2 组可能会从他们那里得到最小的..
这是我到目前为止得到的代码:
public static int MinRecu2(int[] a) {
if (a.length == 1)
return a[0];
int min = a[0];
int min2;
int mark = 0;
// Find first min
for (int i = 1; i < a.length; i++) {
if (a[i] < min) {
min = a[i];
mark = i;
}
}
int [] help1= new int [mark+1];
int [] help2= new int [a.length-mark];
help1=Arrays.copyOfRange(a, 0, mark);
help2=Arrays.copyOfRange(a, mark+1, a.length-1);
// Find second min
min2 = Math.min(MinRecu2(help1), MinRecu2(help2));
return min;
}
我知道代码不起作用,并且我试图做的“递归”很糟糕,但是我试图让我的想法变成代码
【问题讨论】:
-
你在哪里尝试实现递归?
-
尝试使用 java.util.Arrays.sort(int[]) 对数组进行排序
-
@rjdkolb:这是一项学术作业,我猜你的建议是不允许的。
-
@HovercraftFullOfEels 我的错..我没有更改函数名称,现在看
标签: java arrays algorithm recursion