如何在此递归中尝试捕获异常?
这是代码:
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 :(得分: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