我一直试图将我的一些代码转换为纯函数来学习如何以功能的方式使用Kotlin,通过这个简单的代码片段,我无法想到任何方法来制作我的{ {1}}运行一个纯函数。
我知道潜在的递归解决方案但是潜在的堆栈溢出怎么样?Kotlin是否实现了Tail Call Optimization?
示例:
calculateFibonacci
对于整个片段,我上传了这个要点: https://gist.github.com/moxi/e30f8e693bf044e8b6b80f8c05d4ac12
答案 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)
}