tail-recursion

tail-recursion

文章 0 浏览 2

递归开销——有多严重?

可能的重复: 递归比循环更快吗? 我首先接受了认真的 C 编程培训,大约15年前。我的雇主想要高度优化的代码来完成计算困难的任务。我记得不止一次被…

口干舌燥 2024-09-28 12:26:54 2 0

优化 Haskell 函数以防止堆栈溢出

我正在尝试创建一个函数,使用遗传算法递归地玩所有可能的井字游戏,然后返回一个元组(赢,输,平)。然而,当像这样调用时,下面的函数总是会溢出堆…

末蓝 2024-09-26 01:31:41 0 0

如何识别什么是尾递归,什么不是尾递归?

有时它很简单(如果 self 调用是最后一个语句,则它是尾递归),但仍然有一些情况让我感到困惑。一位教授告诉我“如果自调用后没有指令执行,那就是尾…

北音执念 2024-09-18 14:45:43 2 0

JavaScript 引擎尾部调用 (TCO) 是否经过优化?

我有一个用 JavaScript 实现的尾递归寻路算法,想知道是否有(所有?)浏览器可能会出现堆栈溢出异常。…

メ斷腸人バ 2024-09-17 21:15:38 3 0

将 seq 尾部递归复制到 F# 中的列表

我试图通过将序列的第一个元素递归地附加到列表来从序列构建列表: open System let s = seq[for i in 2..4350 -&gt i,2*i] let rec copy s res = if …

来日方长 2024-09-14 13:01:39 2 0

关于 Clojure 中堆和垃圾的初学者问题

我有一个关于 Clojure 的问题: 我试图通过 Project Euler 来学习该语言,但我不明白什么是幕后发生的事情:以下代码旨在使用返回 lim 之前的所有素数…

十六岁半 2024-09-13 23:14:36 1 0

结合记忆和尾递归

是否有可能以某种方式将记忆和尾递归结合起来?我目前正在学习 F#,理解这两个概念,但似乎无法将它们结合起来。 假设我有以下 memoize 函数(来自 真…

旧人 2024-09-13 17:38:00 2 0

这个序列表达式应该是尾递归的吗?

这个 F# seq 表达式对我来说看起来是尾递归的,但我遇到了堆栈溢出异常(启用了尾调用)。有人知道我错过了什么吗? let buildSecondLevelExpressions…

混浊又暗下来 2024-09-10 00:40:19 1 0

递归计算表达式

在上一个问题中,我被告知如何重写我的计算表达式,以便它使用尾递归。我重写了代码,但仍然遇到 StackOverflowException。为了找到问题,我使用状态 …

情话已封尘 2024-09-09 04:49:45 3 0

Java中的递归方法似乎只是“goto”该方法的第一行而不是实际进入下一个调用

我正在创建一个制造房间的工厂,它传递了一系列步骤和一个起始房间,它应该执行一个步骤,构建一个房间,然后用更少的步骤调用自己,并将新房间作为起…

半葬歌 2024-09-09 04:24:13 1 0

如何在(功能)F# 中创建递归数据结构值?

type: 的值如何 type Tree = | Node of int * Tree list 具有以函数方式生成的引用自身的值? 对于树的合适定义,结果值应等于以下 Python 代码中的 x…

不即不离 2024-09-06 03:33:43 1 0

Clojure:避免埃拉托斯特尼筛中的堆栈溢出?

这是我在 Clojure 中实现的埃拉托斯特尼筛法(基于关于流的 SICP 课程): (defn nats-from [n] (iterate inc n)) (defn divide? [p q] (zero? (rem q…

明月松间行 2024-09-04 19:19:48 3 0

生成 .tail IL 指令的简单 F# 代码是什么?

我希望看到 .tail IL 指令,但我一直在编写的使用尾部调用的简单递归函数显然已优化为循环。我实际上是在猜测这一点,因为我不完全确定反射器中的循环…

红焚 2024-09-04 12:14:54 2 0

了解 F# 尾递归

最近在学习F#。 我尝试以不同的方式解决问题。 像这样: (* [012345678] -&gt [(0,1,2)(3,4,5)(6,7,8)] *) //head-recursive let rec toTriplet_v1 li…

以可爱出名 2024-09-03 20:47:17 1 0

为什么 s ++大s不会导致堆栈溢出吗?

我想知道为什么 Prelude&gt head $ reverse $ [1..10000000] ++ [99] 99 不会导致堆栈溢出错误。前奏中的 ++ 看起来很简单并且非尾递归: (++) :: [a]…

我恋#小黄人 2024-09-02 04:23:29 2 0
更多

推荐作者

lioqio

文章 0 评论 0

Single

文章 0 评论 0

禾厶谷欠

文章 0 评论 0

alipaysp_2zg8elfGgC

文章 0 评论 0

qq_N6d4X7

文章 0 评论 0

放低过去

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文