tail-recursion

    2热度

    1回答

    我正在基于C++中的自定义数据结构list_t的项目工作。 这里是预定义的函数,它可以帮助我操作这个list_t,并且我被要求写入的函数被称为insert_list(list_t,list_t,int)是尾递归的。 typedef Recursive_list list_t; // EFFECTS: returns true if list is empty, false otherwise

    0热度

    2回答

    我遇到了SBCL(在Linux上)可能与尾递归有关的问题(不是我完全相信那是什么)。我这次添加了代码(它看起来很长,但那是因为我把它全部展开了)。 这笔交易是我有一个比较两个结构的函数'compare-pstructs'。但是,这些结构可能具有与组件相同结构的列表。自然,这需要一个递归解决方案。 当上述函数需要比较这些pstructs的列表时,会调用第二个函数'compare-parses'。自然

    3热度

    1回答

    此功能应该是尾部呼叫优化。 据我所知,现在的浏览器(Chrome浏览器,甚至试图在加那利)应优化这些事我得到一个错误,这个运行: function die(x, s) { return x === 0 ? s : die(x-1, s+1); } die(100000, 0); 错误: VM369:1 Uncaught RangeError: Maximum call stack

    1热度

    4回答

    我想一个函数f适用于List的每个元素,并在第一个错误不会停止,但是只能扔过去的错误(如果有的话): @annotation.tailrec def tryAll[A](xs: List[A])(f: A => Unit): Unit = { xs match { case x :: xt => try { f(x) } finally {

    2热度

    2回答

    我想这个递归函数转换成尾递归函数 def sumOfFractions(n: Int): Double = { require(n > 0, "Parameter n has to be greater than 0"); if (n==1) 1.0 else 1.0/n + sumOfFractions(n - 1) } 我认为,这个解决方

    3热度

    2回答

    我有一个递归函数,我想做尾递归。我的实际问题更复杂并且与上下文有关。但我想解决的问题是用这个简单的程序来演示的: #include <iostream> struct obj { int n; operator int&() { return n; } }; int tail(obj n) { return tail(obj{ n + 1 > 1000

    0热度

    1回答

    我试图从https://github.com/lspector/gp/blob/master/src/gp/evolvefn_zip.clj 重写这段代码使用易复发: (defn random-code [depth] (if (or (zero? depth) (zero? (rand-int 2))) (random-terminal) (let [

    7热度

    1回答

    我想找到一个二叉树的尾递归折叠函数。鉴于以下定义: // From the book "Functional Programming in Scala", page 45 sealed trait Tree[+A] case class Leaf[A](value: A) extends Tree[A] case class Branch[A](left: Tree[A], right: T

    2热度

    1回答

    我下面的答案here的建议,并已证实:tailcall_optimization =>真实:trace_instruction =>假的,但我仍然得到: SystemStackError: stack level too deep ... ... 8696 levels... 我在做什么错? def persist_shipments_then_next(prev_data) persi

    2热度

    1回答

    我被分配了funct()并被告知将其转换为尾递归,所以我做了funct2()。我使用另一个堆栈溢出thread开始,它有用,但它始终是一个值。 我认为问题是由于ÿ值为0最初,和去其他功能的部分时,减去从而不是等同于初始值x。但我不确定。 #include <iostream> #include <stdio.h> using namespace std; int funct(int x);