tail-recursion 相关问题

尾递归是一种递归策略,其中函数执行一些工作,然后调用自身。 “尾部”指的是递归位于函数的最后。许多 - 特别是功能 - 编程语言编译器可以将这些类型的调用转换为迭代,这意味着可以使用受支持语言中的尾递归而不必担心堆栈溢出,无论调用的数量如何。

以CPS样式重写Ackermann函数

出于简单的好奇心和渴望加深对CPS样式(连续传递样式)的了解,我想知道是否有一种方法可以根据此方案重写此功能。 ...

回答 1 投票 1

红宝石中的尾递归在有条件之前和有条件之后产生总和?

因此,我试图对一个数组的总数求和,但是一旦该总数超过8000,它将减少50%的添加量。我似乎要从if ...

回答 1 投票 0

此序言程序是否在尾递归中?

我想问这个程序是否为尾递归,如何使它为尾递归? euclidsqr([],[],0)。 euclidsqr([X | Xs],[Y | Ys],ED):-euclidsqr(Xs,Ys,ED1),ED为ED1 +(...

回答 1 投票 0

尾部文件OCaml的递归读取

我编写了一个打印文件所有内容的函数,就像让rec print_file channel = try begin print_endline(input_line channel); print_file通道以...

回答 1 投票 0

何时在Rust中保证尾递归?

C语言在C语言中,尾部递归很容易:int foo(...){return foo(...);只需返回,就像递归调用的返回值一样。特别是...

回答 1 投票 1

Erlang,查找列表中数字出现的次数

我是Erlang的新手,正在尝试编写一个程序,该程序将像[1,5,4,5,3,2,2,2,8,11]这样的数字列表作为函数的输入参数。该函数应该返回一个元组列表,......>

回答 3 投票 0

尾递归ocaml函数,其输出具有从n到0的数字的列表;

这是函数应该执行的操作:to0from 5 = [5; 4; 3; 2; 1; 0]我正在尝试执行此尾部递归操作,但找不到方法。这就是我得到的:如果n = 0则为0,否则让rec ...

回答 2 投票 0

标量:使函数尾递归

我在scala中具有以下功能:def is_in [T](e:T,as:List [T]):布尔值= as match {case Nil => false;案例x :: xs => e == x || is_in(e,xs); }现在我要执行此功能...

回答 4 投票 1

关于此sml递归函数的几个问题

当调用f(x-1)时,它调用f(x)= x + 10还是f(x)= if ...这是尾递归吗?我应该如何使用静态/动态分配重写它?让乐趣f(x)= x + 10让乐趣f(x)=如果...

回答 1 投票 0

如何在Kotlin中测试递归函数?

我正在尝试测试以下tailrec函数:private tailrec fun findFixPoint(eps:Double = 5.0,x:Double = 1.0):Double = if(abs(x-cos(x))

回答 2 投票 3

尾递归,后面的代码片段尾递归吗?

我正在学习尾递归,在提出这个问题之前,我想对代码片段是否尾递归进行是/否的回答。 int fib_in(int n,int current,int prev){...

回答 2 投票 0

使用Scala中的尾调用递归获得子问题的结果

我正在尝试使用@tailrec计算每个子问题的结果,类似于普通的递归解决方案可以为每个子问题产生解决方案的方式。以下是我工作的示例。 @ ...

回答 1 投票 0

将状态作为堆栈在Scala中进行尾调用递归

我正在尝试查找注释@tailrec在Scala中的工作方式。以下是我工作的示例。 @tailrec def collat z(n:BigInt,acc:BigInt,fn:(BigInt,BigInt)=> Unit):...

回答 1 投票 0

Kotlin尾递归函数导致堆栈溢出

我正在研究一个简单的问题来练习基本的Kotlin,然后在递归返回行上使用以下代码遇到堆栈溢出:类Solution {fun isPalindrome(s:String):...

回答 1 投票 1

如何在Lisp中使平均函数尾部递归

我只是试图使该平均函数成为尾递归。我已经设法使我的职能发挥作用,并且付出了相当大的努力。之后,我去问我的教授,是否...

回答 2 投票 0

函数的尾递归

我有一个作业问题,提供了递归功能,我必须使用尾递归来实现它。函数是f(0)= 1f(n)= 1 + 2 * f(n-1)我不是尾递归中的佼佼者,我试图...

回答 3 投票 0

Pascal的三角形Scala:使用尾部递归方法计算Pascal的三角形的元素

在Pascal三角形中,三角形边缘的数字均为1,三角形内部的每个数字均为其上方两个数字的和。 Pascal的三角形示例如下所示。 ...

回答 1 投票 0

[java.lang.OutOfMemoryError具有尾部递归

为什么我在使用诸如2000之类的大数字调用第一个函数,而第二个实现没有错误时却得到java.lang.OutOfMemoryError:Java堆空间?不会都保留...

回答 1 投票 1

为什么没有else块会转换为函数的单元类型返回?

我注意到在该行中存在类型不匹配,否则if(r1 == 0 || divisors.tail.isEmpty ||!divisors.tail.contains(r1)){newAcc}。因为我的if ... else if ... def ...

回答 2 投票 -2

意外类型不匹配

我是Scala的初学者,我不明白为什么其他行中类型不匹配if(r1 == 0 || divisors.tail.isEmpty ||!divisors.tail.contains(r1)){ newAcc}。我为...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.