25.尾递归优化
2019-09-29 本文已影响0人
写代码的向日葵
1.代码如下:
/**
* 只有尾递归才能优化
* 1.需要将递归转化为尾递归
* 2.加上关键字tailrec
*/
fun main(args: Array<String>) {
val result=sum(100000)
println(result)
}
tailrec fun sum(n:Int,result:Int=0):Int{
if (n==1)
{
return result+1
}
return sum(n-1,result+n)
}
只有尾递归才能优化
1.需要将递归转化为尾递归
2.加上关键字tailrec
2.尾递归的原理,看编译后的java代码如下:
image.png最后是转换成了迭代