我正在尝试吐出一个int数组并添加元素,但我得到了错误。这是我的代码。我无法弄清楚。
int arraySize = 10;
int[] numsToSum = new int[arraySize];
for (int i = 0; i < arraySize; i++)
{
numsToSum[i] = i * 3;
System.out.println(numsToSum[i]);
}
int sum3 = sumArray3(numsToSum, 0, arraySize - 1);
System.out.println(sum3);
public static int sumArray3(int [] array, int start, int end)
{
int results = 0;
int mid = (start + end)/2;
if(array.length > 0)
{
results += sumArray3(array, start + 1, mid) + sumArray3(array, mid +1, end);
}
return results;
答案 0 :(得分:3)
您没有递归终止条件,在这种情况下,我假设您要检查阵列的开始和结束计数器是否相同。请检查以下代码。
class StackOv {
public static void main(String[] args) {
int arraySize = 10;
int[] numsToSum = new int[arraySize];
for (int i = 0; i < arraySize; i++)
{
numsToSum[i] = i * 3;
System.out.println(numsToSum[i]);
}
int sum3 = sumArray3(numsToSum, 0, arraySize - 1);
System.out.println(sum3);
}
public static int sumArray3(int [] array, int start, int end)
{
int results = 0;
if(start == end)
return array[start];
int mid = (start + end)/2;
if(array.length > 0) {
results += sumArray3(array, start, mid) + sumArray3(array, mid +1, end);
}
return results;
}
}
答案 1 :(得分:0)
看起来你没有&#34;基本情况&#34;,你返回一个可靠的值。您的函数将始终返回0
。
猜测一下,我会说你应该先改变它,以便检查是否start+1 <= end
,如果是,则返回当前值;如果没有使用else
:
else {
results = array[start];
}
答案 2 :(得分:0)
我终于明白了。谢谢你的帮助。我没有像你说的基地。
public static int sumArray3(int [] array, int start, int end)
{
int results = 0;
int mid = (start + end)/2;
if(start < end)
{
results += sumArray3(array, start, mid) + sumArray3(array, mid +1, end);
}
else
results = array[start];
return results;
}