簡體   English   中英

遞歸功能不起作用

[英]Recursive function doesn't work

我正在編寫一個程序,在其中給出頁面的路徑和提及下一頁的標簽的名稱類。

這是我嘗試的代碼:

public String pagination_get_link(String path, String pagnNextLink_tag) throws IOException{
        Document doc = Jsoup.parse(new File(path), "UTF-8");
        Element url = doc.getElementById(pagnNextLink_tag);
        String url_s = url.attr("href");
        pagination_get_link(url_s,pagnNextLink_tag);

        return url_s;

    }

頁面示例就是這樣的頁面: 在此處輸入鏈接描述

我想做一個遞歸方法,直到獲得所有分頁鏈接的循環。 提前致謝 。

您的遞歸函數將永遠運行,這將使您的程序耗盡堆棧內存並崩潰,如果由於找不到元素而不會崩潰,而是在這種情況下依靠捕獲異常而感覺不到就像一個好主意。

進行遞歸循環時,它必須返回結果,並且如果函數“完成”,則不能再次調用函數本身。
也就是說,如果沒有更多數據要處理,那么應該完成它,現在您將繼續運行循環直到崩潰為止。

我不確定您希望您的方法如何工作,但是說實話,在這種情況下,您似乎並不需要遞歸,我建議僅使用常規的while循環或類似方法。


編輯:

如果您確實要使用遞歸代碼,則在url_s為空的情況下在調用函數之前返回應該可以解決問題,例如...

public String pagination_get_link(String path, String pagnNextLink_tag) throws IOException{
    Document doc = Jsoup.parse(new File(path), "UTF-8");
    Element url = doc.getElementById(pagnNextLink_tag);
    String url_s = url.attr("href");
    // Not sure how to check if its empty, so change it to what you need.
    if(url_s == "") { 
      return "";
    }
    pagination_get_link(url_s,pagnNextLink_tag);

    return url_s;
}

現在,當您嘗試通過ID或類似方法獲取元素時,可能會引發異常,在這種情況下,我寧願在嘗試獲取元素之前檢查該元素是否存在以及是否具有“ href”屬性,以及不,只是在那一點返回。

另外,您不必從函數返回字符串,因為對結果不執行任何操作。 將其更改為無效,然后return; 什么時候應該回來。

暫無
暫無

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

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