scala - scala中的递归非常有必要吗?

标签 scala recursion functional-programming

在 coursera scala 教程中,大多数示例都使用自顶向下迭代。正如我所看到的,迭代部分地用于避免 for/while 循环。我来自 C++,对此感到有点困惑。

迭代是否选择了 for/while 循环?实际生产中是否实用?有堆栈溢出的风险吗?效率如何?自下而上的动态规划怎么样(特别是当它们不是尾部递归时)?

另外,我应该少用“if”条件,而多用“case”和子类吗?

最佳答案

真正高质量的 Scala 将使用很少的迭代和稍微多一点的递归。低级命令式语言中的循环通常最好使用高阶组合器(尤其是 map 和 flatmap)来完成,而且还可以使用 filter、zip、fold、foreach、reduce、collect、partition、scan、groupBy 和 a其他人很少。迭代最好仅在性能关键部分进行,而递归仅在高阶组合器不太适合的某些深边缘情况下进行(通常不是尾递归,fwiw)。在生产系统中编写 Scala 代码的三年时间里,我使用了一次迭代,两次递归,每天大约使用五次映射。

关于scala - scala中的递归非常有必要吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18645936/

相关文章:

scala - 这段 Scala 代码中的 _ 是什么意思?

scala - 如何向 DataFrame 添加新的 Struct 列

python - 子集总和 : Why is DFS + pruning faster than 2 for loop?

ios - react cocoa 条件延迟

scala - 哪些特定功能使Scala成为比Groovy更具“功能性”的语言?

functional-programming - 使用方案本身实现内置方案函数 begin(),相同的代码在 MIT-SCHEME 和 Racket 中的行为不同?

python - 静态类型元编程?

scala - 如何忽略每个 Scala 版本的子模块,比如 2.10?

javascript - 无法使用 JS 函数生成树

python - 异常被执行两次并被不同的 except block 捕获