【发布时间】:2016-02-25 04:26:43
【问题描述】:
我在 java 中有一个递归函数。目前我正在通过生成异常在递归函数的某个点打破异常。 问题是我得到堆溢出。一旦我使用递归从递归函数中中断,是否有清除堆中未使用的变量。
public void recursivefun(int k)
{
int m=1;
System.out.println("m is "+m);
if (k>100)
{
throw new Exception();
}
else
{
recursivefun(k+1);
}
System.out.println("after recursion");
}
我每次 k 从 1 开始。我不能使用 return,因为此时我不想回到递归。我想打破完全递归。
【问题讨论】:
-
为什么要抛出异常而不是仅仅调用 return 来退出递归呢?你真正想做什么?
-
或者你是抛出异常,作为 assert ?
-
我只是通过抛出异常来打破整个递归。
-
为什么不直接return?
-
你能发布完整的程序吗?你传递的 k 值是多少?
标签: java recursion heap-memory