浅谈scala递归
在开发代码的过程中有时会用的递归,用本人的第一篇文章来记录下~
什么是递归?
简单来说就是方法中继续调用自身。
递归应该注意什么
递归一定要注意要设置合理的出口,所谓的出口就是方法结束的条件,如果方法不够合理就会造成栈溢出。
递归的分类
按照实现方式可分为首递归和尾递归, 首递归容易造成栈溢出,尾递归是在方法结束时 调用自身,并且调用过程中不涉及计算,在编译过程中,编译器发现如果是尾递归的话会直接复用上一次的栈空间,不会重复开辟新的空间,因此不会出现栈溢出的情况
如何区分
1.尾递归函数在方法最后调用自身,且不涉及计算;首递归在调用方法时会涉及计算,需要重新创建变量空间
2.在19版以后的idea开发代码,会有递归的专属标志
下面是首递归和尾递归的demo:
尾递归
private