繁体   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