Articles of tail recursión

list de kotlin de queue

Estoy tratando de hacer algunas operaciones que causarían un StackOverflow en Kotlin justo ahora. Sabiendo eso, recordé que Kotlin tiene soporte para funciones de tailrec , así que traté de hacerlo: private tailrec fun Turn.debuffPhase(): List<Turn> { val turns = listOf(this) if (facts.debuff == 0 || knight.damage == 0) { return turns } // Recursively […]

¿Cómo evitar el error de StackOverFlow en Java / Kotlin / IntelliJ IDEA?

Quiero hacer un factorial de un BigInteger (en Kotlin). ¡Con una repetición de queue, recibo el error de StackOverFlow cuando bash hacer 9000! . Con una function no recursiva puedo hacerlo … pero tengo mucha curiosidad sobre cómo evitar este tipo de error. Aquí está mi código: import java.math.BigInteger fun tail_recursion_factorial(n: BigInteger, factorialOfN: BigInteger = […]

Kotlin: ¿Por qué esta function no es elegible para la recursion de queue?

La function send() en el siguiente ejemplo se llama recursivamente: internal inner class RouteSender( val features: List<Feature>, val exchange: GrpcUniExchange<Point, RouteSummary> ) { var result: AsyncResult<RouteSummary>? = null // Set in stub for recordRoute. fun send(numPoints: Int) { result?.let { // RPC completed or err'd before sending completed. // Sending further requests won't error, but […]

En la function kotlin android tailrec devuelve 0

Traté de usar este tutorial de youtube tutorial . Tengo una function de la siguiente manera: fun fact(x:Int):Int{ tailrec fun factTail(y:Int, z:Int):Int{ return if(y == 0) { z } else { factTail(y – 1, y * z) } } return factTail(x,1) } y esta function se llama oncreate como: var abc = fact(5) Log.i(TAG, "5! […]

¿Cómo lograr una function pura con progtwigción dinámica en Kotlin?

He intentado transformar parte de mi código en funciones puras para aprender a usar Kotlin de una manera funcional, con este simple fragment de código no puedo pensar en ninguna forma de hacer que mi function de calculateFibonacci Fibonacci sea una function pura. Estoy al tanto de una solución potencialmente recursiva, pero ¿qué pasa con […]

Recursión de Kotlin

fun fact(x: Int): Int{ tailrec fun factTail(y: Int, z: Int): Int{ if (y == 0) return z else return factTail(y – 1, y * z) } return factTail(x, 1) } ¿Podría alguien explicarme cómo funciona la function de recursión anterior en kotlin?

Cuando se utiliza Java / Kotlin para la progtwigción, se recomienda utilizar la recursion de queue o la versión iterativa. ¿Hay alguna diferencia en el performance?

Intento aprender sobre buenas prácticas en progtwigción y estoy atascado con esta pregunta. Sé que en Java, las funciones recursivas pueden ser "un dolor en el culo" (a veces), y trato de implementar tanto como puedo la versión final de esa function. ¿Vale la pena molestarse con esto o debería hacerlo a la vieja usanza? […]

Kotlin: recursión de queue para funciones mutuamente recursivas

Supongamos que escribo un código como este: tailrec fun odd(n: Int): Boolean = if (n == 0) false else even(n – 1) tailrec fun even(n: Int): Boolean = if (n == 0) true else odd(n – 1) fun main(args:Array<String>) { // 🙁 java.lang.StackOverflowError System.out.println(even(99999)) } ¿Cómo hago para que Kotlin optimice estas funciones mutuamente recursivas, […]