kotlin的尾递归

尾调用的重要性在于它可以不在调用栈上面添加一个新的堆栈帧——而是更新它,如同迭代一般。
尾递归因而具有两个特征: 调用自身函数(Self-called); 计算仅占用常量栈空间(Stack Space)。

kotlin

1. 求和

1.1

tailrec fun ad(n:Int,result:Int=0):Int{
   if(n==1) return result+1
else return ad(n-1,result+n) }
  fun main(args: Array<String>) {
 println(ad(100))

}

1.2

 tailrec fun add(n:Int,result:Int):Int{
    if(n==0) return result
    else return add(n-1,result+n)
}
  fun main(args: Array<String>) {
println(add(100,0))   }

2.Fibonacci斐波那契数列

2.1

fun main(args: Array<String>) {
tailrec fun f(n:Int, pf:Int=1,ps: Int=1):Int{
    if(n<=1) return pf
    else return f(n-1,ps,pf+ps)
}
println(f(10))   }

2.2

tailrec fun fcnq(n:Int, pf:Int,ps: Int):Int{
if(n<=1) return pf
else return fcnq(n-1,ps,pf+ps)
    }
    fun main(args: Array<String>) {  
    println(fcnq(10,1,1))        }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容