今天偶然想起递归这个很基础的东西,兴起便敲了起来。嗯,敲着敲着发现有个很重要的东西不知道如何解决,咋跳出递归呢?!
ok,确实忘了这茬,搜了下通过抛出异常来跳出递归。
这……就涉及到了我的知识盲区了,当初大二学java也没好好学这个地方,今天所以就好好看看这抛出异常吧!
首先我是搜索了一波如何跳出递归,然后把自己的代码写成了这样:
public class TestRecursion {
static class StopMsgException extends RuntimeException{
private static final long serialVersionUID = 1L;
}
public static void main(String[] args){
try {
TestRecursion.Recursion(1);
}catch(StopMsgException e) {
System.out.print(e);
}
}
protected static void Recursion(int Num) {
System.out.print(Num+",");
if (Num%10 == 0) {
System.out.print("\n");
}
if (Num>=100){
throw new StopMsgException();
}//抛出异常条件要放在执行递归的前面
TestRecursion.Recursion(++Num);
}
}
就是简单的通过递归打印1-100,运行结果如图:
温习了下抛出异常的原理,在抛出异常的条件达成后,程序会中断,这就达到了我们跳出递归的目的。不过想来在大型项目中,递归应该需要慎重使用的,毕竟还需要后续继续执行需要在finally中添加逻辑,感觉挺麻烦。
ps:若以上文字有不对的地方,还请路过的大神斧正!