检查一个int数组,看看任何两个元素的总和是否等于另一个

时间:2015-02-16 03:34:44

标签: java arrays recursion int sum

在有人说之前......是的......这是一项家庭作业。 基本上,我将获得一个int数组,我想编写一个接受数组的程序,然后检查它是否有任何两个元素总和等于第三个。

因此,如果阵列是[1 2 3 4]那么它是"是"因为1 + 2 = 3和1 + 3 = 4 但如果它[1 1 1 1]那么它就是" no"。

我已经编写了所有其他方法,我只需要逻辑来执行我上面解释的操作,最好使用递归(因为这是分配)。

老实说,我甚至不知道从哪里开始递归,从来没有使用它。

3 个答案:

答案 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;
            }
        }
    }

这可能不是最有效的,但它有效,而这正是您所寻找的。

答案 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个元素的总和

答案 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;}
}