我试图使用递归和linked list
public static int maxOfMyList(MyListOfInts M){
int max = M.restOfTheInts.firstInt;
if(M == null) {
return max;
}
if(M.firstInt > max ) {
max = M.firstInt;
}
return maxOfMyList(M.restOfTheInts);
}
但是我在Java.lang.NullPointerException
的声明中获得了int
。
提前致谢
答案 0 :(得分:1)
这里的想法是将链表节点传递给递归树。将子递归调用返回的值与当前节点值进行比较,并在递归树中向上扩展两个中的较大值。这样,您最终将获得列表中的最大值。
free
调用上面的函数传递LinkedList的int FindMax (ListNode node)
{
if (node == null) {
return -1; /* Can be a big negative number */
}
int x = FindMax (node.next());
int max = (x > node.getKey()) ? (x): (node.getKey());
return max;
}
。
答案 1 :(得分:0)
使用第一个元素
调用该函数public static int maxOfMyList(MyListOfInts M){
if(M==null){
return Integer.MIN_VALUE;
}
//last element
if( M.next()==null){
return M.value();//return current value;
}
return Math.max( M.value(),maxOfMyList(M.next()))
}
假设:next()将指向下一个元素,value()将返回当前元素的值。
没有数学。
public static int maxOfMyList(MyListOfInts M,int currentMax){
if(M==null){
return currentMax;
}
currentMax = M.value()>currentMax?M.value():currentMax;
//last element
if( M.next()==null){
return currentMax;
}
return maxOfMyList(M.next()),currentMax)
}
调用该函数,
maxOfMyList(M,M.value());
答案 2 :(得分:0)
由于AJB的帮助,我得到了它的工作。
public static int maxOfMyList(MyListOfInts M){
if(M.firstInt > M.restOfTheInts.firstInt ) {
return M.firstInt;
}else{
return maxOfMyList(M.restOfTheInts);
}
}
感谢您的帮助!