gpt4 book ai didi

java - 递归方法未正确执行

转载 作者:行者123 更新时间:2023-12-01 12:28:05 25 4
gpt4 key购买 nike

我有一个入门级 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

最佳答案

你在类里面做的事情:

static ArrayList<Integer> list = new ArrayList<>();
static int SIZE = list.size();

意味着SIZE将被初始化为0,并保持0(即使您向列表添加元素。)

这意味着for循环内的代码将被执行0次。

尝试如下:

public class ProgrammingAssignment3 {
private static int initialSize;

//...
public static void populateSortSet() {
//populate the list
initialSize = list.size();
}

因此,在实际填充列表之前,不要设置大小变量的值。

话虽如此,您的代码中还有很多其他奇怪的事情,所以我认为您需要准确指定您要在这里解决的问题。

关于java - 递归方法未正确执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26179574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com