《大数据离线分析技术》课件——递归函数.pptxVIP

  • 2
  • 0
  • 约小于1千字
  • 约 13页
  • 2026-07-30 发布于福建
  • 举报

《大数据离线分析技术》课件——递归函数.pptx

;递归函数的定义;递归函数的定义;

在Scala中,递归函数在函数式编程的语言中起着重要的作用。Scala同样支持递归函数。递归函数意味着函数可以调用它本身。;递归函数的案例; 对比两个递归方法的求值步骤:

假设有方法gcd,用来计算两个数的最大公约数。下面是欧几里得算法的实现:

;gcp(14,21)的求解过程如图:

;

最大公约数的递归求解过程属于尾递归,每次递归调用的时候不需要记录其他的值,而是直接调用递归函数。

广义上来说,只要一个递归函数的最后一个操作只由调用函数组成,栈帧都可以复用,这这种递归形式都可以叫做尾递归。而Scala中并不是对所有的尾递归都做了优化,只有那些满足严格尾递归形式的递归函数才会被优化而服用栈帧。

; 接着,再看数列阶乘案例:

;factorial(4)的求解过程如下:

; 阶乘递归解法就是一种首递归,每次递归调用的结果还需要乘上一个n才能得到结果,也就是说每次递归调用都需要维系调用之前的状态。

对于首递归,递归函数调用之后,后续还有计算,因此在执行过程中需要不断的使用新的栈帧来保存临时状态。首递归在递归层数较少的情况下不会有问题,但是由于需要消耗栈帧来保存临时变量,当递归层数达到一定数量的时候会导致stackoverflow的异常。

;1

文档评论(0)

1亿VIP精品文档

相关文档