gpt4 book ai didi

recursion - 新方案/ Racket : Heavy use of recursion a way of life or am I just going through a typical phase

转载 作者:行者123 更新时间:2023-12-02 22:48:18 24 4
gpt4 key购买 nike

过去几个月我一直在使用函数式语言,从 F# 到 Haskell 再到 Scheme (Racket)。我从来没有真正使用过递归,但是 Haskell 及其模式匹配确实帮助我减少了对递归的恐惧。现在我使用Scheme,我似乎默认使用递归方法。我很好奇这是否表明正在经历“哦 Shiny !”阶段或者递归是否是方案开发的主要内容。

旁注:每当我编写递归方法时,我都在尝试尾递归。

最佳答案

我认为这取决于您所讨论的递归类型。

第一个令人大开眼界的事情(例如,如果您正在学习 SICP)是可以用递归代替迭代。您过去编写的所有那些乏味且容易出错的循环代码都可以用另一种方式完成。这是一个很酷的(正如你所说的)“哦 Shiny !”经验。

下一个令人大开眼界的是您在现实生活中实际编写的递归代码是多么的少。相反,您可以通过使用 mapfold 等构建 block 来避免乏味的迭代(乏味的递归)。

此外,在 Racket 中,您可能会从 mapfold 毕业,而更喜欢“理解”,例如 for/list for/vectorfor/fold 不仅适用于列表,还适用于序列。您将继续沿着食物链向上移动。

话虽如此,有些问题最好以递归方式解决(而不仅仅是“通过其他方式迭代”)。我认为,您在令人大开眼界的第一中获得的舒适度将会有所帮助。

关于recursion - 新方案/ Racket : Heavy use of recursion a way of life or am I just going through a typical phase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9023347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com