소개 클래스 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
@duffymo 닫는 중괄호 의견과 관련하여 옳고 그른 의견이 없습니다. 저자는 그녀가 입문 프로그래밍 수업에 있다고 말합니다. 이것이 중괄호가 어떻게 일치하는지 기억하는 데 도움이된다면 좋은 습관입니다. 내 중첩 된'# ifdef's가 혼란 스러울 때 C에서 때때로 사용합니다. –
@WoodrowBarlow - 나는 거기에 있다고 생각한다. 그러한 혼란에 직업이 빠져들지 않습니다. 이것은 실제 IDE가있는 것입니다. 심지어 이클립스가 그것을 관리 할 수 있습니다. 청력 가치가 있습니다. – duffymo