Java-Java:如何判断递归是最后一次执行的呢?

发布于 2017-03-02 00:04:28 字数 369 浏览 1721 评论 1

public class Recursion {
    public int reduce(int i) {
        try {
            i--;
            if (i != 0) {
                reduce(i);
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            System.out.println("Finish");
        }
        return i;
    }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

想挽留 2017-09-23 09:23:32

首先,递归的结束说明 总是在某一次未调用本函数。即你说的例子里,try中只要i==0,就会结束递归。
i--;//每次递归调用i减一;
if (i != 0) {
reduce(i);
}//当i减到0时,跳出递归。

而try{}catch{}finally{}是java为了捕获异常。如:
try {
int num = 10/0;
System.out.println("Start!");
} catch (Exception e) {
e.printStackTrace();
System.out.println("除数不能为零!");
} finally {
System.out.println("Finish");
}
结果是 除数不能为零!
"Finish"

因为在int num = 10/0;这一步就出错了,在catch中捕获到了异常,所以System.out.println("Start!");没有执行,直接到catch里.不论如何finally部分总会在最后执行。

递归类似循环,而而try{}catch{}finally{}是为了捕获异常。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文