递归函数是一个连续调用自身的函数。 这种技术称为递归。
语法
fun functionName(){
.. .. ..
functionName() //调用函数自身
}
Kotlin
Kotlin递归函数示例1:有限次数
下面来看看一个递归函数打印计数的例子。
var count = 0
fun rec(){
count++;
if(count 1
count => 2
count => 3
count => 4
count => 5
Kotlin递归函数示例2:阶乘数
下面我们来看一个计算阶乘数的递归函数的例子。
fun main(args: Array) {
val number = 5
val result: Long
result = factorial(number)
println("Factorial of $number = $result")
}
fun factorial(n: Int): Long {
return if(n == 1){
n.toLong()
}
else{
n*factorial(n-1)
}
}
Kotlin
执行上面示例代码,得到以下结果 -
Factorial of 5 = 120
上述阶乘实例的工作过程 -
factorial(5)
factorial(4)
factorial(3)
factorial(2)
factorial(1)
return 1
return 2*1 = 2
return 3*2 = 6
return 4*6 = 24
return 5*24 = 120
Kotlin尾递归
在讨论学习尾递归之前,先来尝试使用一般(正常)递归来计算第n
个(上限数为100000
)的总和。
一般递归 下面来看使用一般(正常)递归计算第n
个(上限数为100000
)之和的示例。
fun main(args: Array) {
var result = recursiveSum(100000)
println(result)
}
fun recursiveSum(n: Long) : Long {
return if (n