[英]How to find the maximum value in a linked list recursively?
我需要在列表的頭部作為參數遞歸地找到鏈表中的最大值。 我不知道如何啟動方法的遞歸部分。 到目前為止,這就是我所擁有的。
int maxOfList(List M){
List max = M;
if(M == null)
return max;
if(M.next > max){
max = M.restOfTheInts;
return maxOfList();
}
}
在遞歸中,您經常需要一個入口方法和一個worker方法。 進入方法是一種特殊情況,它允許worker方法在所有情況下都可以工作,而worker進行遞歸。
例如,您的工作人員可能是這樣的:
int maxOfList(int currentMax, List<int> listToCheck) {
// Nothing to compare? currentMax is it!
if (listToCheck == null || listToCheck.size() == 0) return currentMax;
// Compare and return.
List<int> restOfList = listToCheck.subList(1, listToCheck.size());
return maxOfList(Math.max(currentMax, listToCheck.get(0)), restOfList);
}
然后要開始,您需要輸入方法:
int maxOfList(List<int> listToCheck) {
return maxOfList(Integer.MIN_VALUE, listToCheck);
}
因此,對於有效工作的遞歸,您需要在函數內部顯示整個上下文。
int maxOfList(List m) {
if(m.next == null)
return m;
int previousMax = maxOfList(m.next);
if(m > previousMax)
return m;
else
return previousMax;
}
int maxValue(List m){
return maxValue(m, Integer.MIN_VALUE);
}
int maxValue(List m, int num){
if(m.next == null){
if(m.data > num)
return num = m.data;
}
return maxValue(m.next, num);
}
這應該非常簡單。 為了實現遞歸解決方案,請考慮以下所有步驟:
{L}
的max(Li, {L} - Li)
是max(Li, {L} - Li)
,其中Li
是當前元素; MIN_INT
; int maxOfList(List M) { if(M == null) return Integer.MIN_VALUE; int max = maxOfList(M.next); return M.value > max ? M.value : max; }
我假設鏈表有它的內容value
和點到下一個元素next
(尾指向null
)。 如果您發現任何其他問題,請查看以下帖子:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.