У меня есть назначение программирования для вводного уровня Java-класса (проблема суммирования подмножества) - по какой-то причине мой рекурсивный метод не выполняется должным образом (он просто идет прямо до конца метода и распечатывает отсортированный список). Любая помощь будет оценена по достоинству - я новичок, а рекурсивные функции действительно запутывают меня.Рекурсивный метод не правильно выполняется
package programmingassignment3;
import java.io.*;
import java.util.*;
public class ProgrammingAssignment3 {
static int TARGET = 10;
static ArrayList<Integer> list = new ArrayList<>();
static int SIZE = list.size();
public static void main(String[] args) {
populateSortSet();
sumInt(list);
recursiveSS(list);
}//main
public static void populateSortSet() {
try {
File f = new File("set0.txt");
Scanner input = new Scanner(f);
while (input.hasNext()) {
int ele = input.nextInt();
if (ele < TARGET && !list.contains(ele)) {
list.add(ele);
}//if
}//while
Collections.sort(list);
}//try
catch (IOException e) {
e.printStackTrace();
}//catch
}//populateSet
public static void recursiveSS(ArrayList<Integer> Alist) {
if (Alist.size() == SIZE) {
if (sumInt(Alist) == TARGET) {
System.out.println("The integers that equal " + TARGET + "are: " + Alist);
} //if==TARGET
}//if==SIZE
else {
for (int i = 0; i < SIZE; i++) {
ArrayList<Integer> list1 = new ArrayList<>(Alist);
ArrayList<Integer> list0 = new ArrayList<>(Alist);
list1.add(1);
list0.add(0);
if (sumInt(list0) < TARGET) {
recursiveSS(list0);
}//if
if (sumInt(list1) < TARGET) {
recursiveSS(list1);
}//if
}//for
}//else
System.out.println("echo" + Alist);
}//recursiveSS
public static int sumInt(ArrayList<Integer> Alist) {
int sum = 0;
for (int i = 0; i < SIZE - 1; i++) {
sum += Alist.get(i);
}//for
if (Alist.size() == TARGET) {
sum += Alist.get(Alist.size() - 1);
}//if
return sum;
}//sumInt
}//class
Пожалуйста, удалите все эти ужасные комментарии (например «// если» и «// класс ") из вашего кода. Они только мешают и не добавляют ценности. Рекурсия начинается с определения условия остановки. Что это за то, что вы пытаетесь сделать? Можете ли вы рассказать о проблеме суммы подмножества на английском языке? – duffymo
@duffymo нет правильного или неправильного мнения относительно закрытия комментариев скобки. автор говорит, что она во вступительном классе программирования. если это поможет ей вспомнить, как скобки совпадают, то это хорошая практика. я иногда использую его в C, когда мои вложенные '# ifdef' запутывают. –
@WoodrowBarlow - думаю есть. Никакая профессия не таится в таком беспорядке. Для этого нужны настоящие IDE. Даже Eclipse может управлять им для вас. Это стоит услышать. – duffymo