我需要在列表的头部作为参数递归地找到链表中的最大值。我不知道如何启动方法的递归部分。这就是我到目前为止所做的一切。
int maxOfList(List M){
List max = M;
if(M == null)
return max;
if(M.next > max){
max = M.restOfTheInts;
return maxOfList();
}
}
答案 0 :(得分:0)
在递归中,您经常需要一个入口方法和一个worker方法。 entry方法是允许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);
}
答案 1 :(得分:0)
因此,对于有效工作的递归,您需要在函数内部显示整个上下文。
int maxOfList(List m) {
if(m.next == null)
return m;
int previousMax = maxOfList(m.next);
if(m > previousMax)
return m;
else
return previousMax;
}
答案 2 :(得分:0)
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);
}
答案 3 :(得分:0)
这应该非常简单。为了实现递归解决方案,请考虑所有这些步骤:
SELECT date_of_order, Qty_Of_Donuts_In_Order.donut_order_id, Customer.customer_id,
first_name, last_name, street_address, apt_number, city, st, zip_code, home_phone, mobile_phone, other_phone,
qty_of_donuts, Donut.donut_id,
name, description, unit_price,
unit_price * qty_of_donuts AS line_total,
sum(unit_price * qty_of_donuts) AS sub_total,
tax, sum(unit_price * qty_of_donuts) * 1.1 AS total,
handling_notes
FROM
Customer JOIN Donut_Order
ON Customer.customer_id = Donut_Order.customer_id,
Donut_Order JOIN Qty_Of_Donuts_In_Order
ON Donut_Order.donut_order_id = Qty_Of_Donuts_In_Order.donut_order_id,
Qty_Of_Donuts_In_Order JOIN Donut
ON Qty_Of_Donuts_In_Order.donut_id = Donut.donut_id;
的最大值是{L}
,其中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
)。如果您发现任何其他问题,请查看以下帖子:
Finding Max value in an array using recursion
Python: Recursive function to find the largest number in the list