En este tutorial aprenderemos la función recursiva de Kotlin. Al igual que otros lenguajes de programación, podemos usar la recursividad en Kotlin.
Una función que se llama a sí misma se llama función recursiva y este proceso de repetición se llama recursión .
Cada vez que se llama a una función, hay dos posibilidades:
- Llamada de función normal
- Llamada de función recursiva
Llamada de función normal
Cuando se llama a una función desde main()
un bloque, se llama una llamada de función normal. En el siguiente ejemplo, sum()
se llama a la vez y ejecuta su instrucción y termina con la devolución de la suma del número. Si queremos ejecutar la función nuevamente, debemos llamar sum()
desde el bloque principal una vez más.
Llamar a la función sum() desde el bloque main() –
Llamada de función recursiva
Cuando una función se llama a sí misma, se llama llamada de función recursiva. Cada función recursiva debe tener una condición de finalización, de lo contrario, las ejecuciones del programa entran en un bucle infinito y dan como resultado un error de desbordamiento de pila.
Llamar a la función callMe() desde su propio bloque –
Aquí, hemos utilizado la condición de terminación; de lo if( a > 0)
contrario, ingresa al ciclo infinito. E imprime el valor de 5 a 0.
Ejemplo 1: Encuentra el factorial de un número sin usar la condición de terminación
// 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 }
Producción:
Exception in thread "main" java.lang.StackOverflowError
Ejemplo 2: Encuentra el factorial de un número usando la condición de terminación.
// 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 }
Producción:
Factorial of 5 is: 120
Funcionamiento del programa factorial –
La llamada recursiva de Fact() se explica paso a paso en la siguiente figura:-
Ejemplo 3: encuentre la suma de los elementos de una array usando la recursividad
// two parameters passed an array and size of array fun sum(args: Array<Int> , 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") }
Producción:
The sum of array elements is: 55
Explicación:
aquí hemos inicializado una array y la hemos pasado como argumento a la función sum(). En cada llamada recursiva, el valor del índice disminuye en uno. Si el índice es igual a cero o menor que entonces termínelo y devuelva la suma de todos los elementos.
Publicación traducida automáticamente
Artículo escrito por Aditya_patel y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA