美文网首页
kotlin 学习之尾递归优化

kotlin 学习之尾递归优化

作者: findTrueLoveByM | 来源:发表于2020-08-22 09:25 被阅读0次

定义一个函数 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日志限制了

相关文章

  • kotlin 学习之尾递归优化

    定义一个函数 1=1 2=2+1 3=3+2+1 4=4+3+2+1 ,下面来写函数 此时传入参数100000会报...

  • 7.尾递归优化

    尾递归:最后一行调用自身之后没有任何操作直接返回kotlin尾递归优化,关键字tailrec如: 不优化的话大量的...

  • 什么是尾调用?什么是尾递归?尾调用的优化?尾递归优化?

    尾调用优化 尾递归(尾调用优化)

  • Kotlin语言(九):特性

    1、尾递归优化 尾递归:函数在调用自己之后没有再执行其他任何操作就是尾递归 尾递归优化的原理就是将递归转换成迭代,...

  • JAVA 递归问题,kotlin 尾递归优化

    递归(Recursive)是指自己方法内部调用自己 如求 1- n(n>1)之间的和: 这是使用递归的方式求和,很...

  • 第2模块第1章2829递归的作用尾递归优化

    尾递归优化 def cal(n): print(n) return cal(n+1) cal(1) 尾递归优化并不...

  • 尾递归优化

    “尾递归优化”的含义是:如果递归函数属于尾递归,那么运行时会优化其调用过程。优化主要针对调用栈,将多层调用,转化为...

  • 9. 递归函数

    使用递归函数需要注意防止栈溢出解决递归调用栈溢出的方法是通过尾递归优化遗憾的是,大多数编程语言没有针对尾递归做优化...

  • 递归优化-尾递归

    一、定义 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 二、利弊 递归函数...

  • 递归优化-尾递归

    尾递归能否起到优化作用跟编译器有关系,并不是用了尾递归就一定能起到优化作用。 定义:函数里的最后一个动作是返回一个...

网友评论

      本文标题:kotlin 学习之尾递归优化

      本文链接:https://www.haomeiwen.com/subject/rpbujktx.html