从零开始学Kotlin第三课

kotlin函数和函数式表达式的简化写法:

fun  main(args:Array<String>) {
    var result=add(2,5)
    println(result)
    ///简化--》2
var i={x:Int,y:Int->x+y}
    var result2=i(2,5)
    println(result2)
///简化--》3
var j:(Int,Int)->Int={x,y->x+y}
    var result3=j(2,5)
    println(result3)
}

///简化--》1
fun add(x:Int,y:Int)=x+y

 数据类型的转换

 人机交互: 两个!!是确保输入的数据一定不为null

 异常捕获:

 阶乘:

import java.math.BigInteger

fun  main(args:Array<String>){
    //大数的阶乘
    /*93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000
*/
println(fact(BigInteger("100")))

}
fun fact(num:BigInteger):BigInteger{
    if(num==BigInteger.ONE){
        return BigInteger.ONE
    }else{
        return num*fact(num-BigInteger.ONE)
    }
}

 如果数据过多会导致栈溢出,可以用尾递归优化,java没有此优化方案

fun  main(args:Array<String>){
    var result=0
    println(olladd(1000,result))
}
//尾递归优化,要求返回必须返回本身才能用。
tailrec  fun olladd(num:Int,result:Int):Int{
    println("计算机第${num}次运算,result=${result}")
    if(num==0){
        return 1
    }else{
        return olladd(num-1,result+num)
    }
}
原文地址:https://www.cnblogs.com/q1359720840/p/10588652.html