浅谈scala递归

本文介绍了Scala编程中递归的概念,强调了设置递归出口以防止栈溢出的重要性。文章详细阐述了首递归和尾递归的区别,指出尾递归在方法结束时调用自身且不涉及额外计算,有利于优化,避免栈溢出。通过示例代码演示了首递归和尾递归的用法,旨在帮助开发者更好地理解和使用递归。
摘要由CSDN通过智能技术生成

浅谈scala递归

在开发代码的过程中有时会用的递归,用本人的第一篇文章来记录下~

什么是递归?
简单来说就是方法中继续调用自身。

递归应该注意什么
递归一定要注意要设置合理的出口,所谓的出口就是方法结束的条件,如果方法不够合理就会造成栈溢出。

递归的分类
按照实现方式可分为首递归和尾递归, 首递归容易造成栈溢出,尾递归是在方法结束时 调用自身,并且调用过程中不涉及计算,在编译过程中,编译器发现如果是尾递归的话会直接复用上一次的栈空间,不会重复开辟新的空间,因此不会出现栈溢出的情况

如何区分
1.尾递归函数在方法最后调用自身,且不涉及计算;首递归在调用方法时会涉及计算,需要重新创建变量空间
2.在19版以后的idea开发代码,会有递归的专属标志
尾递归的符号像一个刷符号
首递归的符号像一个漩涡

下面是首递归和尾递归的demo:

尾递归

  private 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值