tail-recursion 相关问题

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

Kotlin中的扩展函数和尾调用优化(TCO)

我有以下使用TCO的函数:tailrec fun superDigit(n:String):Int {val sum = n.fold(0){sum,char - > sum + char.toString()。toInt()} return if(总和<10)总和...

回答 1 投票 0

这个尾递归斐波那契函数的定义是尾递归的吗?

我已经看到了以下F#定义的延续传递式fibonacci函数,我总是假设是尾递归的:让fib k = let rec fib'k cont =匹配k与| ...

回答 3 投票 3

尾递归的元素总和

我目前正在尝试学习F#中的尾递归,所以说我有一个函数,它接受一个列表,每个元素乘以3,然后得到列表的总和。哪些代码看起来......

回答 1 投票 0

如何使树映射尾递归?

假设我有一个这样的树数据结构:trait Node {val name:String} case class BranchNode(name:String,children:List [Node])extends Node case class LeafNode(name:String)extends Node ...

回答 2 投票 6

可以通过编译器优化延迟的递归调用吗?

假设我有这个函数:func abc(i int)(e error){defer func(){if r:= recover(); r!= nil {abc(i * 2)}}()if someCondition(i){return ...

回答 2 投票 3

什么是尾部呼叫优化?

很简单,什么是尾部调用优化?更具体地说,任何人都可以显示一些可以应用的小代码片段,而不是在哪里,并解释为什么?

回答 9 投票 701

这个Depth First Search实现现在是递归的吗?

我有这个函数用于函数遍历图:private def dfs(current:RCell,rCellsMovedWithEdges:Vector [RCell],acc:Vector [RCell] = Vector()):Vector [RCell] = {current.edges ....

回答 2 投票 0

Clojure:在“IF”的两个条件下迭代循环

我是clojure的新手并且一直试图解决地图矢量的问题({:疾病哮喘,:st-dt 2018-2-1,:en-dt 2018-4-1,:剂量0.25} {:疾病哮喘,:st-dt 2018-3-1,:en-dt 2018-6-5,:...

回答 2 投票 0

乘以pop'd整数

我正在写一段代码从Stack中弹出并繁殖。我知道我可以打印我的pop'd整数,但是如果我弹出另一个整数,我如何跟踪一个pop'd整数?我正在努力写一个......

回答 2 投票 0

将两个递归组合成一个尾递归代码

我正在尝试定义消耗列表的函数longestString(可能包含任何类型的元素)并返回最长的str我已经构建了两个函数来执行此操作,第一个采用列表...

回答 1 投票 2

抛出异常来强制退出递归有效吗?

以下只是伪代码。 function x(node){if(node.val == 42)return true; //如果我在这里抛出异常怎么办? val1 = node.left? x(node.left):false; val2 =节点....

回答 1 投票 4

Python 3.7:如何避免这种递归方法的stackoverflow?

1.我正在使用Python开发一个项目的情况,我得到了以下很多函数:来自PyQt5.QtCore import * import functools ... def myfunc(self,callback,...

回答 1 投票 1

Scala:尾递归功能

结果总是得到“1”。 :(这个函数有什么问题?def power(base:Int,exp:Int):BigInt = {def _power(结果:BigInt,exp:Int):BigInt = exp match {case 0 =&...

回答 2 投票 1

什么是尾递归?

在开始学习lisp时,我遇到了尾递归这个术语。这究竟是什么意思?

回答 27 投票 1512

堆栈安全的相互递归,而不会泄漏调用端的实现细节

我推广了clojure的loop / recur trampoline,以便它可以使用间接递归:const trampoline = f =>(... args)=> {let acc = f(... args);而(acc && acc.type == ...

回答 1 投票 3

使用scanLeft打包符号

99个scala问题有这个问题:将列表元素的连续重复包装到子列表中。如果列表包含重复元素,则应将它们放在单独的子列表中。 ...

回答 5 投票 3

如何以堆栈安全的方式映射树?

递归映射树有不同的方法:const reduceTree =(f,node)=> {const go =([x,xs])=> f(x,xs.map(go)); return go(node); }; const mapTree =(f,node)=> ...

回答 1 投票 2

如何通过[重复]迭代此代码10次

这是一个问题:编写一个尾递归函数,它将两个非负整数P和k作为输入,并输出一个具有初始总体P和......的人口的前10年的列表。

回答 1 投票 0

使用尾递归来复制列表中的项目

我有一个家庭作业问题,要求我们编写一个谓词,创建列表中每个项目的副本,首先使用线性递归,然后使用尾递归。我们不能使用内置...

回答 1 投票 2

(Scheme)尾递归模幂运算

我有一个赋值来做一个尾递归函数,它取3个整数(可能非常大),p q和r,并计算除法的模数(p ^ q)/ r。我想出了如何做一个功能......

回答 1 投票 1

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