从零开始学Kotlin第三课

时间:2021-05-27 21:15:47

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

数据类型的转换
从零开始学Kotlin第三课

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

从零开始学Kotlin第三课

异常捕获:

从零开始学Kotlin第三课

阶乘:

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)
}
}