【问题标题】:java print list of items using recursion seems inefficientjava使用递归打印项目列表似乎效率低下
【发布时间】:2017-03-15 19:33:32
【问题描述】:

我正在做一个非常基本的任务。 “使用递归打印列表的值”,我想出了下面的代码,但是当它每次调用自己时都会通过列表,我想知道是否有更好的方法。请问有什么建议吗?

public class RecurList {

public static void main(String[] args) {
    int[] list = {8,7,9,10,56};

    int ix = list.length;
    int sumNow = ShowNext(ix, 0, list);  // initial call -> sum is 0

    System.out.println("Recursion total is " + sumNow);
}   
    public static int ShowNext(int inx, int sum, int[] lst) {
        if (inx == 0) return sum;
        int item = lst[inx - 1];
        sum += item;
        System.out.println("inx:" + inx + " item:" + item + " sum:" + sum);
        return ShowNext(inx - 1, sum, lst);
    }

}

【问题讨论】:

标签: java list recursion


【解决方案1】:

请阅读并关注Java Naming Conventions。方法名称以小写字母开头。

“使用递归打印列表的值”

由于您使用的是数组而不是列表,因此您的作业失败了。

它每次调用自己时都会通过列表,我想知道是否有更好的方法。

这个问题有两种解决方案。

@Prune 建议的更有意的方法是:将列表(在您的情况下是一个数组)缩短一个元素。实用程序类Arrays 具有执行此操作的方法。

较小的“递归”样式是使数组成为类成员并将其从方法参数列表中删除:

 public class RecurList {
    static int[] list; 
 public static void main(String[] args) {
    list = {8,7,9,10,56};

    int ix = list.length;
    int sumNow = ShowNext(ix, 0);  // initial call -> sum is 0

    System.out.println("Recursion total is " + sumNow);
  }   
  public static int ShowNext(int inx, int sum) {
        if (inx == 0) return sum;
        int item = lst[inx - 1];
        sum += item;
        System.out.println("inx:" + inx + " item:" + item + " sum:" + sum);
        return ShowNext(inx - 1, sum);
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2015-08-09
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    • 2016-11-19
    • 2014-11-27
    相关资源
    最近更新 更多