Kotlin基础教程-函数

函数

在之前的文章中,或多或少的介绍过函数的一些基本概念,这里不想再重头讲,只说一些之前没遇到过的。

中缀符号

关键字:infix

infix fun Int.getMin(x: Int): Int {
    val result = if (this > x) x else this
    return result
}

fun main(args: Array<String>) {
    val a: Int = 2
    println(a getMin 3)
    println(a.getMin(3))
}

表达式函数

fun double(x: Int): Int = x * 2

因为函数返回表达式,可以省略大括号。

局部函数

fun testDoctorq(name: String) {
    println("Outer Fun $name")
    fun testDoctorq(name: String, age: Int) {
        println("Inner Fun $name")
    }
    testDoctorq(name, 28)
}

fun main(args: Array<String>) {
    testDoctorq("doctorq")
}

尾递归函数

在需要递归的地方,使用循环解决,防止堆栈溢出。

关键字:tailrec

tailrec fun findFixPoint(x: Double = 1.0): Double 
    = if (x == Math.cos(x)) x else findFixPoint(Math.cos(x))

实际执行的是如下代码:


private fun findFixPoint(): Double {
    var x = 1.0
    while (true) {
        val y = Math.cos(x)
        if ( x == y ) return y
        x = y
    }
}

定义尾递归函数要注意的地方是,最后一个操作必须调用自己。而且递归调用代码后面不能再有其他操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值