定义一个函数 1=1 2=2+1 3=3+2+1 4=4+3+2+1 ,下面来写函数
fun addAll(number:Int):Int{
if(number==1){
return 1
}else{
return number+addAll(number-1)
}
}
此时传入参数100000会报错误
EXCEPTION: main
Process: com.example.myapplication, PID: 17320
java.lang.StackOverflowError: stack size 8192KB
at com.example.myapplication.KotlinPractice.addAll(KotlinPractice.kt:51)
此时这个错误在java里加到100000次Java会罢工,kotlin代码可以优化它,称为尾递归优化 , 用上字段tailrec
tailrec fun addAllT(number:Int,result:Int):Int{
if(number==0){
return 0
}else{
return addAllT(number-1,result+number)
}
}
此时传入参数number10000,result 0 看结果2020-08-21 15:57:35.083 24021-24021/com.example.myapplication I/kotlin: 第num=37次运算结果result=50004297我的电脑日志没出来超过安卓studio4kb日志限制了