在有人说之前......是的......这是一项家庭作业。 基本上,我将获得一个int数组,我想编写一个接受数组的程序,然后检查它是否有任何两个元素总和等于第三个。
因此,如果阵列是[1 2 3 4]那么它是"是"因为1 + 2 = 3和1 + 3 = 4 但如果它[1 1 1 1]那么它就是" no"。
我已经编写了所有其他方法,我只需要逻辑来执行我上面解释的操作,最好使用递归(因为这是分配)。
老实说,我甚至不知道从哪里开始递归,从来没有使用它。
答案 0 :(得分:0)
您可以使用它来查找数组中每两个数字的总和,然后将它们与数组的内容进行比较。
for(int i = 0; i < array.length; i++) {
for(int j = 0; j < array.length; j++) {
int sum = array[i] + array[j];
for(int k = 0; k < array.length; k++) {
if(array[k] == sum)
return true;
else
return false;
}
}
}
这可能不是最有效的,但它有效,而这正是您所寻找的。 p>
答案 1 :(得分:0)
我在这里使用了Integer[]
Integer[] arr = new Integer[] { 1, 2, 3, 4 };
for (int i = 0; i < arr.length - 1; i++) {
if(arr[i] == 0) {
continue;
}
for (int k = i + 1; k < arr.length; k++) {
if (arr[k] != 0
&& Arrays.asList(arr).contains(arr[i] + arr[k])) {
return true;
}
}
}
return false;
Arrays.asList(arr)
将arr
转换为列表,contains(arr[i] + arr[k])
将检查arr
答案 2 :(得分:-1)
你总是可以像这样使用for循环:
for(int i = 0; i+2 < array.length; i++) //i + 2 because the last two element pair won't be used
if(array[i+2] == array[i] + array[i+1]){return true;} //Or whatever else you want to return
else{return false;}
}