栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

递归函数的概念(递归定义的函数下面说法正确的)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

递归函数的概念(递归定义的函数下面说法正确的)

已知递归函数会占用栈,对空间的浪费比较严重,可能出现栈空间溢出的情况。
常用递归如下:

    def fact(a: Int): Int = {
      if (a == 0) return 1
      fact(a - 1) * a
    }

这种递归在if条件判断不成立的时候,每次都会留下一个乘以a的操作,直到if条件成立,才会一层一层释放空间。


第二种是尾递归。

	@tailrec
    def fact2(a: Int, currRes: Int): Int = {
      if (a == 0) return currRes
      fact2(a - 1, currRes * a)
    }

相比于常规递归,这种尾递归在每次重新进入当前函数的时候,上次的函数操作已经全部执行完毕,没有余留操作,所以会比常规递归要节省空间。

java语言不能实现尾递归,而函数式编程语言scala可以用到。
尾递归的实现依赖于编译器的识别。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/776223.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号