【问题标题】:How to find exceptions in recursion如何在递归中找到异常
【发布时间】:2014-07-26 03:55:33
【问题描述】:

如何尝试在此递归中捕获异常?

这是代码:

try
    { 
    public static long faktoral(long a)
    {
      return a*faktoral(a-1);  
    }
    }
    catch(exception e){
           System.out.print(e.message());
    public static void main(String [] args)
    {
        System.out.print(faktoral(3));
    }

【问题讨论】:

  • 欢迎。当您提出问题时,请提供有关您遇到的错误的详细信息。带有实际异常文本的回溯通常对试图回答您的问题的人有用...

标签: java exception recursion try-catch stack-overflow


【解决方案1】:

您遇到的问题是您超出了最大递归深度,对吗?

递归函数需要有某种转义方式....

有一些伪代码:

function faktoral(a):
    if a<0:
        raise Exception ("negative")
    if a<=1:
        return 1
    return a*faktoral(a-1)

如果您逐行考虑当前代码的作用,您就会明白我为什么要添加额外的 if 语句。

如果我用您的代码调用faktoral(2),您的函数将尝试返回:

2*faktoral(1) which is:
2*1*faktoral(0) which is:
2*1*0*factoral(-1)
etc

更正后的代码将返回:

2*faktoral(1) which is:
2*1
2

【讨论】:

    猜你喜欢
    • 2018-01-03
    • 2013-11-15
    • 2014-04-29
    • 2012-10-25
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    相关资源
    最近更新 更多