【发布时间】:2021-01-26 18:39:41
【问题描述】:
我无法解决这个递归问题。递归很难理解并且能够编码,因为我是编码新手。问题是编写一个递归方法来查找给定列表的每个可能的子列表。您的方法应该接受一个字符串列表作为参数,并打印可以从该列表的元素创建的每个子列表,每行一个。假设没有重复项并且列表不为空。不要使用任何循环。
我能想到的唯一可能的方法是使用 for 循环或使用更多参数,但我不能按照说明进行操作。这就是我到目前为止所拥有的。我检查了列表 api,它说有一个可以使用的 subList 方法。我能够通过每次递归从列表大小中减去 -1 来打印前 5 个可能的子列表,然后我得到一个索引错误。这是非常令人沮丧的,所以如果有人有任何提示或指示将不胜感激。
如果你可以用循环解决它,我很想看看你会如何解决它。
public static void main(String[]args){
ArrayList<String> list = new ArrayList<>(List.of("Janet", "Robert", "Morgan", "Char"));
subsets(list);
}
public static void subsets(List<String> list) {
int n = list.size();
if(list.isEmpty()){
System.out.println(list);
}
if(n > 0){
System.out.println(list.subList(0 , n));
}
subsets(list.subList(0,n -1));
}
【问题讨论】:
-
不能使用循环根本??
-
说明书上说不要使用循环,所以我不能
-
我认为如果不使用至少某种迭代是不可能的.. 和你的教授谈谈
-
问题出自一本java编程教科书。我觉得有办法。我可能不得不
-
嗯,我想我有一个想法,我会在答案中解释..