簡體   English   中英

自制類的遞歸indexOf()方法

[英]Recursive indexOf() method for self-made class

我得到了一個類List(在這里: http : //pastebin.com/ZCi3q7LQ ),並且必須為其編寫一些方法,包括為指定整數查找索引的方法。

索引從零開始,如果指定的整數不在列表中,則該方法必須返回-1,該方法必須遞歸工作並在$ O(n)$時間內運行。

我的問題是,當為非平凡列表中的整數調用indexOf時,該方法返回-1。 我已經嘗試了幾乎所有可能的組合,並在此處閱讀了一些看起來相似的問題,但它們沒有幫助。 這就是我所做的:

public int indexOf(int x) {
    return indexOf(x, first);   
}

private static int indexOf(int x, Node n) {
    if (n==null) {
        return -1;
    }
    else if (n.data==x) {
        return 0;
    }
    else return 1+indexOf(x, n.next);
}

如果x不在列表中,並且列表為非空,這將返回最后一個元素的索引,這不是預期的。 就像我說的那樣,我完全不知道如何進行這項工作,我很感激能得到的任何幫助。

(如果重要,是的,這是家庭作業。)

問題是,當它返回備份堆棧時, 總是向返回值添加1,包括負1。 雖然添加支票以查看收益是否為-1很容易,但有一個更簡單的解決方案。

public int indexOf(int x) {
    return indexOf(x, first, 0);   
}

private static int indexOf(int x, Node n, int depth) {
    if (n==null) {
        return -1;
    }
    else if (n.data==x) {
        return depth;
    }
    else return indexOf(x, n.next, depth + 1);
}

嘗試這個

if (n != null){ //make sure n isn't null

    if (n.data == x) {
        return index;
    else if (n.next == null)//if the next node is null then you've reached the end of the stack without finding a match
         return -1;
    //else recurse and update the index
    index++;
    return indexOf(x, n.next, index + 1)
    }
}
return -1;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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