- 2
- 0
- 约小于1千字
- 约 13页
- 2026-07-30 发布于福建
- 举报
;递归函数的定义;递归函数的定义;
在Scala中,递归函数在函数式编程的语言中起着重要的作用。Scala同样支持递归函数。递归函数意味着函数可以调用它本身。;递归函数的案例; 对比两个递归方法的求值步骤:
假设有方法gcd,用来计算两个数的最大公约数。下面是欧几里得算法的实现:
;gcp(14,21)的求解过程如图:
;
最大公约数的递归求解过程属于尾递归,每次递归调用的时候不需要记录其他的值,而是直接调用递归函数。
广义上来说,只要一个递归函数的最后一个操作只由调用函数组成,栈帧都可以复用,这这种递归形式都可以叫做尾递归。而Scala中并不是对所有的尾递归都做了优化,只有那些满足严格尾递归形式的递归函数才会被优化而服用栈帧。
; 接着,再看数列阶乘案例:
;factorial(4)的求解过程如下:
; 阶乘递归解法就是一种首递归,每次递归调用的结果还需要乘上一个n才能得到结果,也就是说每次递归调用都需要维系调用之前的状态。
对于首递归,递归函数调用之后,后续还有计算,因此在执行过程中需要不断的使用新的栈帧来保存临时状态。首递归在递归层数较少的情况下不会有问题,但是由于需要消耗栈帧来保存临时变量,当递归层数达到一定数量的时候会导致stackoverflow的异常。
;1
您可能关注的文档
最近下载
- 电子学会青少年机器人一级培训.pptx
- DB31T 1467-2024公共场所人脸识别分级分类应用指南.pdf VIP
- 广州地铁应聘测试题库面试技巧与答案解析集.docx VIP
- 发射前空间碎片减缓审查要求.pdf VIP
- 2024复发性子宫内膜癌内分泌治疗中国专家共识(完整版) .pdf VIP
- 2020年gcp考试答案教学.docx VIP
- 2025年《食品添加剂生产使用标准》知识考试题库及答案解析.docx VIP
- 2024-2025学年中职化学通用类高教版(2021·十四五)教学设计合集.docx
- 2025年第七届韬奋杯编校大赛试题.docx VIP
- 2026年消防法律法规知识培训PPT.pptx VIP
原创力文档

文档评论(0)