[英]Finding max Int using recursion in Java
您好,我是 Java 新手,所以請保持溫和。 我確信代碼看起來冗長而丑陋,但我們都從某個地方開始。
我正在嘗試使用遞歸查找數組中的最大數字。 對於任何默認 -1 正在工作的數組,我的輸出都是 0。
任何幫助我朝着正確方向前進的幫助都會有很大幫助
謝謝大家-
public int maxInt(MyList<Integer> m){
int result = 0;
int e0;
int len = m.length();
int e1;
if (len == 0) {
result = -1;
}
else if(len == 1) {
e0 = m.getElement(0);
result = e0;
}
else if(len == 2) {
e0 = m.getElement(0);
e1 = m.getElement(1);
if (e0 > e1) {
result = e0;
}else {
result = e1;
}
}
else if(len > 2) {
e0 = m.getElement(0);
e1 = m.getElement(1);
if (e0 <= e1){
m.removeElement(0);
result = maxInt(m);
m.addElement(0, e0);
}
}
return result;
}
在len > 2
情況下,如果e0
是較大的數字,則什么也不會發生。 通常,該代碼已損壞 - 您希望首先運行m.removeElement
、 maxInt
、 m.addElement
代碼以從子列表中獲取最大數字,然后將該數字與元素 0 進行比較,以較大者返回。
我建議您學習調試 - 只需編寫代碼,然后如果它不起作用,那么祈禱有人在 SO 上提供幫助是......充其量是乏味的編碼;)
這很簡單! 拿起筆和紙,和電腦一起寫。 你在頭腦中運行程序,寫下正在發生的事情。 使用調試器單步調試代碼(或者,如果必須的話,可以在整個代碼中散布大量 System.out.println 語句)。
每次程序的結果都和你想象的不一樣? 你發現了一個錯誤。
就這么簡單。
您說您是Java
新手,但這確實與Java
無關。 這與理解recursion
有關,陷阱和陷阱在其他語言中也相同(或非常相似)。
我現在可以告訴你,代碼應該不超過 10 行(如果你有sublist
方法,則更少。
我建議你先嘗試一些簡單的事情來feel
遞歸。 對前 n 個奇數求和或簡單地打印 1 到 n 的值。 然后僅通過更改打印語句的位置來打印值 n 到 1。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.