Kotlin 递归
在本教程中,我们将学习 Kotlin 递归函数。像其他编程语言一样,我们可以在 Kotlin 中使用递归。
调用自身的函数称为递归函数,这种重复过程称为递归。
每当调用一个函数时,就有两种可能性——
- 普通函数调用
- 递归函数调用
普通函数调用
当从main()
块调用函数时,它被称为普通函数调用。在下面的示例中,一次调用sum()
并执行其指令并终止并返回数字的总和。如果我们想再次执行该函数,那么我们应该再一次从主块调用sum()
。
从 main() 块调用 sum()函数–

递归函数调用
当一个函数调用自身时,它被称为递归函数调用。每个递归函数都应该有终止条件,否则程序执行进入无限循环并导致堆栈溢出错误。
从它自己的块调用 callMe()函数-

在这里,我们使用了终止条件if( a > 0)
否则进入无限循环。它打印从 5 到 0 的值。
示例 1:在不使用终止条件的情况下查找数字的阶乘
// Kotlin program of factorial using recursion
fun Fact(num: Int):Long{
return num*Fact(num-1) // no terminate condition
}
//main method
fun main() {
println("Factorial of 5 is: "+Fact(5))
//Recursive call
}
输出:
Exception in thread "main" java.lang.StackOverflowError
示例 2:使用终止条件查找数字的阶乘。
// Kotlin program of factorial using recursion
fun Fact(num: Int):Long{
return if(num==1) num.toLong() // terminate condition
else num*Fact(num-1)
}
//main method
fun main() {
println("Factorial of 5 is: "+Fact(5))
//Recursive call
}
输出:
Factorial of 5 is: 120
阶乘程序的工作 -
Fact() 的递归调用在下图中一步一步解释:-

示例 3:使用递归查找数组元素的总和
// two parameters passed an array and size of array
fun sum(args: Array , index:Int ):Int{
return if(index<=0) 0
else (sum(args ,index-1) + args[index-1]) // recursive function call
}
fun main() {
// array initialization
val array = arrayOf(1,2,3,4,5,6,7,8,9,10)
// size of array
val n = array.size
val result = sum(array,n) // normal function call
println("The sum of array elements is: $result")
}
输出:
The sum of array elements is: 55
解释:
在这里,我们初始化了一个数组并作为参数传递给 sum()函数。在每个递归调用中,索引值减一。如果索引等于零或小于则终止它并返回所有元素的总和。
在评论中写代码?请使用 ide.geeksforgeeks.org,生成链接并在此处分享链接。