2014-06-05 41 views
-1

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

这是代码:

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

欢迎。请在您提问时提供有关您所犯错误的详细信息。实际异常文本的追溯通常对试图回答您的问题的人有用...... – Sheena

回答

0

您所遇到的问题是,你是超越您的最大递归深度,对不对?

递归functinon需要有逃避的一些方法....

有一些伪代码:

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