我正在尝试使用递归算法查找链表的大小。这是我到目前为止的内容:
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;
}
这样就可以了。举个例子,解决一下,检查一下自己。