有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在不使用节点的情况下交替合并链表?通过使用递归?

没有错误,但仍然不起作用。我不知道怎么了。我们还没有在课堂上讨论节点的概念,所以我很难理解它

它的输出应该是:

骨瘦如柴的爱-小鸟

更快乐-埃德·希兰

总有一天-切尔西·卡特勒

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();    
    }
    
}


共 (1) 个答案

  1. # 1 楼答案

    这是一个使用递归的例子,我知道这是一个先决条件

    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,或者像我所做的那样将索引移到函数外部,或者将其作为public static void merge(int index)之类的参数。然后,您将从内部调用它,如merge(index++)

    我想这是一个意见问题。(如果您愿意,您可以阅读纯函数/非纯函数和命令式/函数式编程,这是两者的区别)