从Matlab转向Kotlin(3):顶层函数、成员函数、局部函数、递归函数、尾递归函数

熟悉了Kotlin的数组/集合函数,就能复现一些简单的Matlab计算数学的程序。刚好能把笔者研究生期间计算数学的一点Matlab编程经验用上。

这里把《Kotlin从基础到实践》的书里把函数章节学完,可以给《从Matlab转向Kotlin》系列收个尾了。

在函数里编辑数学公式,以及函数的调用,Matlab和Kotlin大同小异,这里学习整理函数的分类和递归。

 

函数的分类

Kotlin里把函数分为顶层函数、成员函数、局部函数。

顶层函数是直接在kt文件里创建函数

成员函数是在类里面创建函数

局部函数是在函数内部创建函数

创建方式没什么不同。

 

递归函数

递归函数:在函数体内部调用函数本身。能用是少量代码进行多次重复计算。

fun main() {
    println(sum(4))
}

fun sum(num: Int) : Int {
    return if (num == 1) {
        1
    } else {
        num + sum(num - 1)
    }
}

结果

从Matlab转向Kotlin(3):顶层函数、成员函数、局部函数、递归函数、尾递归函数_第1张图片

尾递归函数

尾递归函数:一个函数中所有递归调用都出现在函数的末尾。

好处:可以大大缩减所使用的栈空间,提高效率。

缺点:虽然能够优化,但仍然可能造成栈溢出问题。

fun main() {
    println(sum(100))
}

tailrec fun sum(num: Int, total: Int = 0) : Int {
    return if (num == 1) {
        1 + total
    } else {
        sum(num - 1, num + total)
    }
}

结果

从Matlab转向Kotlin(3):顶层函数、成员函数、局部函数、递归函数、尾递归函数_第2张图片

 

 

你可能感兴趣的:(kotlin,android,studio,android,kotlin)