如何递归计算列表中的元素数量?

时间:2014-11-17 02:26:39

标签: list recursion listitem

Public class ListItem{

   final int number;
    ListItem next;


ListItem(int number, ListItem next) {
        this.number = number;
        this.next   = next;
    }

public int length() {
        if(this.next != null){
            this.next = this.next.next;
            return 1 + this.length();
        }
        else return 0;
    }

当我一直试图计算长度时,我的长度比预期长度低1。例如,如果长度为10,我会得到9.我该如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

您的上一个值返回0,因为this.next为null。所以你要添加除最后一个元素之外的所有内容,因此你将返回长度-1。我来自Ruby背景,并且在10年内没有编程Java,但是下面会更像这样,语法可能会关闭。

此外,通常对于递归的东西,返回的基本情况将是函数的第一行。

Public class ListItem{
  final int number;
  ListItem next;


ListItem(int number, ListItem next) {
    this.number = number;
    this.next   = next;
}

 public int length() {
    if(this.next == null){
        return 1; 
    }
    else {
        return 1 + this.next.length;
    }
}