kotlin基础 尾递归】的更多相关文章

尾调用的重要性在于它可以不在调用栈上面添加一个新的堆栈帧——而是更新它,如同迭代一般. 尾递归因而具有两个特征: 调用自身函数(Self-called): 计算仅占用常量栈空间(Stack Space). 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(1…
写在前面: 因为工作需要,目前转安卓开发,用的IDE是AS3.2版本,语言的话,用的是Kotlin.由于之前是做.NET的,没接触过这方面的东西,所以完全是小白一枚.所以想着开个博客,以此来记录自己的学习进度.光是环境搭建,自己琢磨了一上午,也上网百度,最后在一以前搞安卓开发的同事的帮助下,才完成环境的搭建. --------------------------------------------我是分割线---------------------------------------------…
Kotlin的类型系统 一.可空类型 //s为null的话编译器会报错,没问号不能为空 fun strLen(s : String)=s.length //如果允许s为空可: fun strLen2(s : String?) : Int{ if (s!=null) return s.length else return 0 } /* 注意可空类型和不可空类型只是在编译期做的 检查不同,runtime这两者并无区别 */ //"?."的用法 fun strLen3(s : String?…
1. 改进点/基础 //安全判空 val length = text?.length; //类型转换 if (object is Car) { var car = object as Ca } //操作符变化 & and | or ^ xor >> shr << shl //打印日志 print("123123") println("asdassda") 2. 字符串 //多行字符串 val xx = ""&quo…
一切都需要从基础学起! 前言: 在Kotlin语言中,没有分号的概念了,也就是每一行代码,都不在需要用分号结束了 点击查看代码 定义 常量:val --相当于java当中的final 变量:var 关键字:如枚举关键字enum,在 ‘enum class 类名’ 中,enum是关键字,但是如果 ‘val enum = 1’中,enum就不是关键字了 类型:以冒号:隔开在后面,也可以省略直接赋值,类型后带问号?表示可为空类型(默认空安全) 是否为null参数定义:如x: String?表示x变量是…
继续学习基础语法,在上次https://www.cnblogs.com/webor2006/p/11183077.html中定义了一个两数相加的函数,如下: 其实对于这个函数还可以进一步简写,因为函数体就一句话,如下: 那如果函数不返回值呢,看下面的例子: 其实Unit是可以省略掉的,IDE中也已经将它标灰了,如下: 那,这个Unit是干嘛用的呢?之后再学习,先不管这个细节.如果说想输出“a+b=5”这个形式的字串那该怎么来弄呢,叫Java的风格应该是这么写的: 但在Kotlin中可以采用“字符…
递归: 对于递归最经典的应用当然就是阶乘的计算啦,所以下面用kotlin来用递归实现阶乘的计算: 编译运行: 那如果想看100的阶乘是多少呢? 应该是结果数超出了Int的表述范围,那改成Long型再试下: 呃~~还是显示为0,那就没有方法能看到100的阶乘是多少了么,当然有!!这时需要用到另外一个数据类型啦,貌似平常没怎么用到过,如下: 好大~~ 尾递归优化:这里再用递归来实现数字的累加,其规则跟阶乘类似:1的累加=1.2的累加=2+1.3的累加=3+2+1.4的累加=4+3+2+1,实现当然s…
对于Kotlin中的函数来说,和JavaScript或者Lua这些语言很像,它有着这些语言的特性.但是也与这些语言就着许多不同之处.或许你更了解Java语言,然而对于Java语言来说,它不是不是闭包这个特性的.由于在这篇文章主要是讲解函数的基本使用,故而只会讲解到函数的定义.函数的返回值.函数的参数等.剩下的部分我会在这个系列的高级篇会给大家奉上. 目录 一.函数的声明及基本使用 在Kotlin中函数的声明,同JavaScript相似. 1.1.函数的声明 Kotlin中的函数声明关键字为:fu…
1.函数也是对象,可以作为参数和返回值 2.使用驼峰命名,尽量避免下划线 3.public函数应当有说明文档 4.lambda中花括号内前后都应该有空格 5.空值安全检查  var s: String? = null;当一个变量允许为空值时,必须使用?来声明 6.当?:左边表达式不为空时,返回表达式的值,否则执行?:右边表达式的值 7.as?  安全类型转换,转换失败会返回null 8.lambda表达式相当于一个函数     fun add(x :Int,y :Int) : Int = x +…
Kotline简介 Kotlin是一门与Swift类似的静态类型JVM语言,由JetBrains设计开发并开源.与Java相比,Kotlin的语法更简洁.更具表达性,而且提供了更多的特性,比如,高阶函数.操作符重载.字符串模板.它与Java高度可互操作,可以同时用在一个项目中. Kotlin语法 1.函数的使用 定义函数使用fun关键字,如下代码所示: fun add(a: Int, b: Int): Int { return a + b } 函数add有两个Int型的参数,冒号后跟的是函数的返…