tail-recursion 相关问题

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

有人可以帮我理解如何解决以下尾递归优化问题吗?

对以下函数应用尾递归优化,并编写优化编译器生成的目标代码: int foo(int n, int m) { 如果(n<1) return m+1; else

回答 1 投票 0

如何在 Scala 中在自引用树结构上创建尾递归合并方法(或者甚至可能)?

更新 2024.03.16:提供了产生正确输出的代码,但仍然不是尾递归。 如何在 Scala 中的自引用树结构上创建尾递归合并方法(或...

回答 1 投票 0

提高斯特林数计算效率

我一直在尝试探索Haskell中递归的可能性,但是对于面对大递归时如何提高效率不太了解。今天,我想做一个计算的函数...

回答 1 投票 0

如何使用尾递归来优化这个算法?

我想用尾递归来优化这个dfs,但我不知道如何实现它,有人可以帮助我吗? 我的第一个解决方案是以下代码,我想用尾递归修改它以获得测试用例...

回答 1 投票 0

F# 中编写函数时堆栈溢出

基本上,我的问题是我正在尝试组合大量函数,因此我正在创建一个深层次的组合函数链。这是我的代码: let rec fn (f : (状态 -> 状态选项)...

回答 1 投票 0

如何使用循环/递归在 clojure 中打印 n 个数字的平方和

我正在尝试下面的代码,但它给出了一个错误: (defn 平方和 [n] (循环[i 0 结果0] (如果(<= i n) (do (recur (inc i) (conj result...

回答 1 投票 0

尾部调用优化有什么大不了的以及为什么 Python 需要它?

显然,对于 Python 是否需要尾部调用优化(TCO)存在很大争议。当有人向 Guido 发送一份 SICP 副本时,事情就达到了紧要关头,因为他没有“得到它......

回答 4 投票 0

向我解释尾部调用优化的重要意义是什么以及为什么 Python 需要它

显然,对于 Python 是否需要尾部调用优化(TCO)存在很大争议。当有人向 Guido 发送一份 SICP 副本时,事情就达到了紧要关头,因为他没有“得到它......

回答 4 投票 0

lua中的尾调用优化

Lua声称它正确地实现了尾调用,因此每次调用都不需要维护堆栈,因此允许无限递归,我尝试写一个sum函数,一个不是尾调用,一个是t...

回答 2 投票 0

我的递归调用怎么不是尾调用?

在下面的代码中,所有重试调用都会收到警告“递归调用不是尾调用”: 私有 tailrec 挂起乐趣 重试(numberOfRetries:Int,块:挂起() - > T):

回答 1 投票 0

如何收集随机数字序列的最大不重叠升序/降序前缀

令 S = [x1, x2, ..., xn] 为不同数字的随机序列。我们可以将 S 的运行定义为: 序列 [x1, x2, ..., xi],对于 1 ≤ i ≤ n,使得 x1 < x2 < ... < xi, and i = n or xi...

回答 1 投票 0

在 oCaml 中将一个列表附加到另一个列表

我需要一个尾递归函数,将 list1 附加到 list2 前面。 我这样尝试过 让rec附加lst1 lst2 acc = 将 lst1 与 | [] -> acc @ lst2 | hd::tl -> 追加 lst1 t...

回答 1 投票 0

F# 中如何知道函数是否是尾递归

我写了以下函数: 让 str2lst str = 让rec f s acc = 将 s 与 | “” - > ACC | _ -> f (s.Substring 1) (s.[0]::acc) f 字符串 [] 我怎么知道是否...

回答 3 投票 0

如果Python中没有尾递归,那么为什么我在leetcode上的代码对于不同的递归有不同的工作方式?

根据链接,Python 中不存在尾递归。我正在研究 leetcode 问题,其中给出了两个输入:数字及其幂。功率也可以为负。我需要找出指数...

回答 1 投票 0

带尾递归的树到有序列表

我实际上在一个问题上坐了一个多小时,但没有找到解决方案。 我有这个数据类型: 输入“一棵树=空|” 'a * '一棵树 * '一棵树的节点 我必须找到一个函数来...

回答 2 投票 0

定制map函数中的递归——不明白程序流程

我正在学习尾递归,不明白这个例子的流程。 我正在使用 VSCode 调试器,但不明白为什么当程序到达 return[f(arg), *result] 时它会转到 result = ...

回答 1 投票 0

R 统计环境上的尾递归

R 是否支持正确的尾递归?在哪里可以找到相关文档?

回答 4 投票 0

Clojure 中的尾部调用优化

我有以下功能。 (defn 获取所有 str “获取所有长度为 n 的字符串的列表, 由字母列表中的字符组成 并且不包含两个相同的

回答 1 投票 0

如何让 TypeScript 执行尾递归优化?

const isPositive = (n: 数字) => n > 0; 函数fitsIn(被除数:数字, 除数:数字, 计数:数量, 累加:数字):数字{ 如果(准确...

回答 2 投票 0

返回一个大小随迭代而增加的列表的迭代过程与返回标量的列表有什么不同吗?

这实际上是因为我最初误读了练习1.12的文本。 请求确实是为了 编写一个过程,通过递归过程计算帕斯卡三角形的元素。 我

回答 1 投票 0

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