tail-recursion

    0热度

    1回答

    所以我试图创建一个函数,它接受一个单词列表并返回新列表中的字母。这是我到目前为止: quicksort :: Ord a => [a] -> [a] quicksort [] = [] quicksort (p:xs) = (quicksort lesser) ++ [p] ++ (quicksort greater) where lesser = filter (<

    0热度

    3回答

    我有一个关于斯卡拉尾递归的问题。我写了一个简单的尾递归代码,它接受一个列表并创建一个新的偶数列表。但由于scala无法将元素附加到列表中,我的列表按降序排列。下面是代码 def listCreator(lists: List[Int]): List[Int] = { @tailrec def evenListCreator(lists: List[Int], accum: Li

    2热度

    1回答

    我试着用这个教程youtube tutorial。我有一个函数如下: fun fact(x:Int):Int{ tailrec fun factTail(y:Int, z:Int):Int{ return if(y == 0) { z } else { factTail(y - 1, y * z) } }

    7热度

    2回答

    我尝试了解编程中的良好实践,并坚持这个问题。我知道在Java中,递归函数可能是'屁股疼痛'(有时),我尽可能实现该函数的尾部版本。这是值得一提的,或者我应该以旧式的方式做? 有(在科特林)这两种功能之间的任何差别: tailrec fun tail_fibonacci(n : BigInteger, fib1 : BigInteger = BigInteger.ZERO , fib2 : BigI

    0热度

    1回答

    它应该是递归的基本问题。 简单代码: func fact(n int) int { if n == 0 { return 1 } return n * fact(n-1) } 怎么行n * fact(n-1)将由通用编程语言引擎盖下进行处理,C++,Java的,去... 在我的理解行n * fact(n-1)将创建表达式就像 n * n-1 * n-

    4热度

    1回答

    这是展平二叉查找树的一种方法。它的问题是当它构建的大函数最终应用于[]时,堆栈溢出。我想知道是否有合理的方法修复这段代码片段而不完全改变它的工作方式。例如,如果构建一个自定义作曲家来构建一个函数树,然后使用一个显式堆栈来评估它们(因为问题已经是将一棵树展平了),那么这将无济于事。 let flatten_k t = let rec f t (k:(list<'a>->list<'a>)

    0热度

    1回答

    我在搜索ES6中的IsInTailPosition()函数的最终用户文档时没有运气。 language reference解释了算法,但没有提供关于如何使用此功能的叙述。这是一个有趣的功能,因为它涉及到尾部呼叫优化(如果我理解正确的话)。有人可以解释一下如何使用这个功能,理想情况下是一个例子。

    1热度

    2回答

    为了练习目的,我一直试图以功能方式实现一对Scala的List方法,其中之一是partition。假设以下特征: def partition[T](l: List[T], f: T => Boolean): (List[T], List[T]) 它返回一个包含两个列表的元组 - 第一个包含了所有从l那些符合通过谓语f,另一个包含所有其他元素的元素。 我想出了下面的递归解决方案,它是不幸的是没有

    1热度

    1回答

    在必要的编码风格的常见循环模式是遵循对象链查找结束时,例如: private ThreadGroup rootOf(ThreadGroup leaf) { ThreadGroup rootGroup = leaf; ThreadGroup parentGroup; while ((parentGroup = rootGroup.getParent()) != null

    1热度

    3回答

    以下是引发编译错误的最小代码:“不在尾部位置的递归调用”。但是,我使用的是@inline,而递归调用是处于尾部位置。我使用这个@inline的原因是我有两次重复的原始reccall的代码。 import scala.annotation._ object Test { @tailrec private def test(i: Int): Int = { @inline def