如何在递归中查找异常

时间:2014-06-05 08:36:52

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

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

这是代码:

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));
    }

1 个答案:

答案 0 :(得分:0)

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

递归函数需要有一些逃避方法....

有一些伪代码:

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