如何在Kotlin中实现动态编程的纯函数?

时间:2017-08-11 08:46:48

标签: functional-programming kotlin tail-recursion

我一直试图将我的一些代码转换为纯函数来学习如何以功能的方式使用Kotlin,通过这个简单的代码片段,我无法想到任何方法来制作我的{ {1}}运行一个纯函数。

我知道潜在的递归解决方案但是潜在的堆栈溢出怎么样?Kotlin是否实现了Tail Call Optimization?

示例:

calculateFibonacci

对于整个片段,我上传了这个要点: https://gist.github.com/moxi/e30f8e693bf044e8b6b80f8c05d4ac12

1 个答案:

答案 0 :(得分:2)

自产自销:

NAME

generateSequence实际上以斐波纳契实现为例。

fun fib(i: Int): Int {
    tailrec fun go(k: Int, p: Int, c: Int): Int {
        return if (k == 0) p
        else go(k - 1, c, p + c)
    }

    return go(i, 0, 1)
}