簡體   English   中英

在 Java 中使用遞歸查找最大 Int

[英]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.removeElementmaxIntm.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM