我正在制作一个递归函数,它必须没有参数来获取链表的长度。
public int lengthHelper() {
if (first == null) {
return 0;
} else {
first = first.next;
return 1 + length();
}
}
问题是通过使用 first=first.next 我将首先破坏,首先是我的标题。所以我想先在函数中复制(而不是我丑陋的包装脚本),但递归使这很麻烦。知道如何进行吗?
这是包装器顺便说一句,我想删除它:
public int length() {
Node temp = copy(first);
int output = this.lengthHelper();
first = copy(temp);
return output;
}
我有这些限制的原因是因为这是基于任务的个人挑战。Recursive + wrapper 就足够了,但自从我一直在考虑是否有可能以更清洁的方式解决它。