我正在尝试使用递归算法查找链表的大小。这是我到目前为止的内容:

  public int getCurrentSize()
  {
     int size = 0;

     size = getCurrentSizeHelper(headRef);

     return size;
  }


  public int getCurrentSizeHelper(BoxClass workingRef)
  {
     int sizeAtIndex = 0;

     //If empty, size is zero
     if (isEmpty())
        {
           return sizeAtIndex;
        }

     //If there is no next box, end recursion and increment size
     if (workingRef.nextRef == null)
        {
           sizeAtIndex++;
        }

     //While there are next boxes, increment size and continue recursion
     else
        {
           sizeAtIndex = getCurrentSizeHelper(workingRef.nextRef) + 1;
        }

     return sizeAtIndex;
  }


我之前已经完成了这项工作,但是,每次尝试运行它时,都会出现堆栈溢出错误。希望对这个问题有任何见识。

最佳答案

更好的紧凑版本(伪代码):

  public int getCurrentSizeHelper(BoxClass workingRef)
  {
       if (workingRef.isEmpty())
       {
           return 0;
       }
       return getCurrentSizeHelper(workingRef.nextRef) + 1;
  }


这样就可以了。举个例子,解决一下,检查一下自己。

10-04 14:03