【2023】Kotlin教程 第二篇 面向对象与函数式编程 第16章 Kotlin中函数式编程API 16.8 案例:求阶乘
【2023】Kotlin教程 第二篇 面向对象与函数式编程 第16章Kotlin中函数式编程API 16.8 案例:求阶乘
·
【2023】Kotlin教程

第二篇 面向对象与函数式编程
第16章 Kotlin中函数式编程API
为了提供对函数式编程的支持,Kotlin在集合和数组中提供了一些高阶函数,它们的参数和返回类型都是函数类型。因为集合和数组它们都是数据的容器,即按照某种算法实现的数据结构,这些数据在这些函数中“流动”最后输出结果。集合和数组中的这些高阶函数构成了Kotlin函数式编程API。
16.8 案例:求阶乘
求阶乘通常会使用递归函数调用,这比较影响性能,学习了函数式编程API,可以使用reduce函数实现。
package com.dingjiaxiong
//求n的阶乘
fun factorial(n: Int) = IntArray(n) { it + 1 }
.reduce { acc, i -> acc * i }
fun main() {
println("1! = ${factorial(1)}") //输出:1! = 1
println("2! = ${factorial(2)}") //输出:2! = 1
println("5! = ${factorial(5)}") //输出:5! = 120
println("10! = ${factorial(10)}") //输出:10! = 3628800
}
运行结果

声明阶乘函数factorial,采用的是表达式函数体,其中IntArray(n) { it + 1 }是创建元素是1~n的Int类型集合,如果n=5那么,创建的集合为[1,2, 3, 4, 5]。reduce { acc,i -> acc * i }表达式对集合进行累积。
更多推荐


所有评论(0)