14得票2回答
Scala中的尾递归有界整数对流?

我对Scala非常陌生,请谅解我的无知!我想要迭代一组整数对,这些整数对受最大值的限制。比如,如果最大值是5,则迭代应该返回:(0, 0), (0, 1), ..., (0, 5), (1, 0), ..., (5, 5) 我选择尝试以尾递归的方式将其作为流返回: @tailrec ...

13得票5回答
我应该在Prolog和一般情况下避免尾递归吗?

我正在为了乐趣阅读在线书籍《现在学Prolog》。 我正在尝试编写一个谓词,使用累加器遍历列表中的每个成员,并将其加一。我已经轻松地完成了非尾递归版本。addone([],[]). addone([X|Xs],[Y|Ys]) :- Y is X+1, addone(Xs,Ys). 但是我读到...

12得票2回答
F#纯函数数据结构之权重偏左堆示例3.4

我正在研究Okasaki的纯函数数据结构,并尝试构建F#实现。我也在做书中列出的习题(其中一些非常具有挑战性)。目前我卡在了第3.4个练习上,它要求修改WeightBiasedLeftistHeap的合并函数,以便它能够执行单遍而不是原来的两遍实现。 我还没有找到如何做到这一点的方法,希望能...

9得票5回答
尾递归函数向列表追加元素

我看过一些实现将一个元素添加到列表中的例子,但是它们都没有使用尾递归。如何以函数式的方式实现这样的函数? (define (append-list lst elem) expr)

9得票3回答
这段 Haskell 代码是否会占用过多的内存?

就像这段代码一样: import Data.Char groupsOf _ [] = [] groupsOf n xs = take n xs : groupsOf n ( tail xs ) problem_8 x = maximum . map product . group...

8得票5回答
递归算法的运行时复杂度

我搜索了很多资料,似乎找不到关于运行时复杂度、递归和Java相关的内容。 我正在学习算法课程中的运行时复杂度和大O符号,并且我在分析递归算法方面遇到了困难。 private String toStringRec(DNode d) { if (d == trailer) r...

7得票2回答
Oz中的尾递归优化

在《Oz教程中关于函数的章节》中,它提到: 类似于惰性函数式语言,Oz允许某些形式的尾递归优化,这在某些严格的函数式语言(包括Standard ML、Scheme和并发函数式语言Erlang)中是找不到的。然而,在Oz中,标准函数定义并不是惰性的。 接下来,它展示了以下在Oz中是尾递归的函...