Java 如何在不使用节点的情况下交替合并链表?通过使用递归?
没有错误,但仍然不起作用。我不知道怎么了。我们还没有在课堂上讨论节点的概念,所以我很难理解它 它的输出应该是: 骨瘦如柴的爱-小鸟 更快乐-埃德·希兰 总有一天-切尔西·卡特勒Java 如何在不使用节点的情况下交替合并链表?通过使用递归?,java,merge,linked-list,Java,Merge,Linked List,没有错误,但仍然不起作用。我不知道怎么了。我们还没有在课堂上讨论节点的概念,所以我很难理解它 它的输出应该是: 骨瘦如柴的爱-小鸟 更快乐-埃德·希兰 总有一天-切尔西·卡特勒 public class HandsOnAct1 { static LinkedList songs = new LinkedList(); static LinkedList artists = new LinkedList(); static LinkedList playlist = new Link
public class HandsOnAct1 {
static LinkedList songs = new LinkedList();
static LinkedList artists = new LinkedList();
static LinkedList playlist = new LinkedList();
public static void Merge(){
int element= songs.size();
int number=0;
System.out.println(element);
if (number !=element){
playlist.add(number, songs);
playlist.add(number,artists);
number++;
}
System.out.println(playlist);
}
public static void main(String[] args) {
songs.add("Skinny Love");
songs.add("Happier");
songs.add("Sometimes");
artists.add("Birdy");
artists.add("Ed Sheeran");
artists.add("Chelsea Cutler");
Merge();
}
}
这是一个使用递归的例子,我知道这是一个先决条件
static LinkedList<String> songs = new LinkedList<>();
static LinkedList<String> artists = new LinkedList<>();
static LinkedList<String> playlist = new LinkedList<>();
songs.add("Skinny Love");
songs.add("Happier");
songs.add("Sometimes");
artists.add("Birdy");
artists.add("Ed Sheeran");
artists.add("Chelsea Cutler");
int index = 0;
static void merge() {
// if you want/need checks
if ( index >= artists.size()){
return;
}
playlist.add(songs.get(index) + " - " + artists.get(index));
System.out.println(playlist.get(index));
index++;
merge();
}
merge();
您自己的代码的主要问题是需要从内部再次调用merge,或者像我所做的那样将索引移到函数外部,或者将其作为参数(如publicstaticvoidmergeint-index)引入。然后从内部调用它,就像mergeindex++
我想这是一个意见问题。如果您愿意,您可以阅读纯函数/非纯函数和命令式/函数式编程,这是两者的区别欢迎访问SO!你期望什么样的产出?另一方面,将参数传递给合并函数是一种更好的设计,而不是让它在一组固定的全局函数上操作。返回一个结果,让调用方打印,以便该函数可重用。@ggorlen输出应该是:Skinny Love-Birdy Happier-Ed Sheeran某天-Chelsea Cutler好的,我会尝试你的建议。希望我能成功。非常感谢您,您可以编辑您的帖子,使其与控制台上显示的内容一模一样。作为一种评论很难理解。谢谢您的代码似乎希望使用循环来迭代列表,但我没有看到任何循环。另外,在列表中使用泛型也是一个好主意。@ggorlen对于这个活动,我们被要求不要使用循环/迭代,而是使用任何递归方法。这就是为什么我有很多麻烦;-;这很好,但是可以在链表上使用递归来破坏堆栈,因此这是一个值得怀疑的设计选择。当深度不是直线时,递归是最好的。如果必须使用递归,则需要从自身内部调用Merge,这里是真正需要参数的地方。我建议编辑你的帖子,说明你需要使用递归的要求。非常感谢你,现在我明白了@niclaslindgren。你今天救了我的命haha@ZeyZey听到这个消息我很高兴。请考虑将答案标记为已接受。