文章目录
- 前言
- 关于强制跳出
前言
我们知道递归的程序有很多特点,比如说可读性很好,代码简洁,但是缺点也很明显,很多时候递归时间复杂度较高,因此可以考虑转化成备忘录递归算法,或者使用 DP 等其他算法解决,而且递归很容易导致栈溢出,即 Stack OverflowerFlow,因为递归程序实际上就是一个栈的结构,最原始的方法在栈底,递归不断的循环中,最后一个方法在栈顶,但是递归循环次数太多,会导致栈的空间不足,导致栈溢出,所以有时候是不适合用递归的,建议使用循环
关于强制跳出跳出一般的循环我们又 break 语句,或者很少用到的 goto 语句也是支持跳出的,但是递归呢?它如何跳出了,这里有一个小技巧,递归很耗时,所以我们有时候已经找到结果了,想要跳出去就可以通过 java 抛出异常的形式
// 递归的方法中一旦找到结果,抛出异常
throw new RuntimeException();
// 非递归方法中调用递归时候,可以通过 try catch 语句捕获异常
try {
recursion(arr);
} catch(Exception e) {}