Tag: 尾递归

当使用Java / Kotlin进行编程时,建议使用尾递归还是迭代版本? 性能有什么不同?

我试图了解编程中的良好实践,我坚持这个问题。 我知道,在Java中,递归函数可能是“一个痛苦的屁股”(有时),我尽可能实现该函数的尾部版本。 这是值得打扰还是应该以旧式的方式? 这两个函数(在Kotlin中)有什么区别: tailrec fun tail_fibonacci(n : BigInteger, fib1 : BigInteger = BigInteger.ZERO , fib2 : BigInteger = BigInteger.ONE) : BigInteger { return when(n){ BigInteger.ZERO -> fib1 else -> tail_fibonacci(n.minus(BigInteger.ONE),fib1.plus(fib2),fib1) } } fun iterative_fibonacci(n: BigInteger) : BigInteger { var count : BigInteger = BigInteger.ONE var a : BigInteger = BigInteger.ZERO var b : BigInteger […]

Kotlin – 为什么这个函数不适合尾递归?

下面的例子中的函数send()递归地调用它自己: internal inner class RouteSender( val features: List, val exchange: GrpcUniExchange ) { var result: AsyncResult? = 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 they will be thrown away. return } val index = […]

在kotlin android tailrec函数返回0

我试图用这个教程YouTube教程 。 我有一个function如下: 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) } 这个函数在oncreate中被调用为: var abc = fact(5) Log.i(TAG, “5! = $abc”) 当应用输出日志时,显示如下: I/MainActivity: 5! = 0 任何人都可以指出这里有什么问题。

如何在Kotlin中用动态编程实现一个纯函数?

我一直在试图将我的一些代码转换为纯函数,以便学习如何以function的方式使用Kotlin,通过这个简单的代码片段,我想不出任何方法来使我的calculateFibonacci函数成为一个纯函数。 我意识到一个潜在的递归解决方案,但是对于潜在的堆栈溢出呢,Kotlin是否实现了Tail Call Optimization? 例: val fibonacciValues = hashMapOf(0 to BigInteger.ONE, 1 to BigInteger.ONE); // * TODO investigate how to do dynamic programming with a pure function ** // private fun calculateFibonacci(n: Int): BigInteger? { if (fibonacciValues.contains(n)) { return fibonacciValues.get(n) } else { val f = calculateFibonacci(n – 2)!!.add(calculateFibonacci(n – 1)) fibonacciValues.put(n, f) return f […]

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) } 有人请向我解释一下上面的递归函数在kotlin中是如何工作的?