recursion相关内容

“必要"命令式语言中递归的使用

我最近在几个不同的地方看到类似这样的评论:“我在学校学习了递归,但从那时起就再也没有使用过或觉得有必要使用它."(递归似乎是特定程序员群体中“书本学习"的一个流行例子.) 的确,在 Java 和 Ruby[1] 等命令式语言中,我们通常使用迭代并避免递归,部分原因是堆栈溢出的风险,部分原因是大多数程序员在这些语言中的风格习惯了. 现在我知道,严格来说,在这些语言中没有“必要"使用递归: ..
发布时间:2022-01-24 11:44:41 其他开发

递归和迭代之间的区别

有什么区别?这些是一样的吗?如果没有,可以举个例子吗? 分子量:迭代 - 1 : 迭代或重复的动作或过程或者直到满足一个条件 递归 - 3 : 一种计算机编程技术,涉及使用一个或多次调用自身直到满足指定条件的过程、子例程、函数或算法,此时每个重复的其余部分从最后一个开始处理一个叫第一个 解决方案 我们可以从 递归和迭代过程.前者如您的定义所述,其中递归与数学 recursion ..
发布时间:2022-01-24 11:36:43 其他开发

为什么递归优于迭代?

迭代比递归更高效,对吧?那么为什么有些人认为递归比迭代更好(用他们的话来说更优雅)?我真的不明白为什么像 Haskell 这样的语言不允许迭代并鼓励递归?鼓励性能不佳的东西不是很荒谬(当更多性能选项(即递归可用)时也是如此)?请对此有所了解.谢谢. 解决方案 迭代比递归,对吧? 不一定.这个概念来自许多类似 C 的语言,在这些语言中调用函数(无论是否递归)都会产生很大的开销,并且 ..
发布时间:2022-01-24 11:28:24 其他开发

jQuery对对象的递归迭代

前几天我想我在 jQuery 中看到了一个对象迭代器,它有一个可以设置为递归迭代子对象的标志.我认为它是 jQuery.each() 的一部分,但现在我在文档中看不到该功能. jQuery中有没有这样的迭代器可以自动递归? (我知道如何用 javascript 做到这一点.只是想知道我是否真的看到了我以为我看到的东西.) 非常感谢! 编辑: 明确地说,我正在考虑一种实用方法 ..
发布时间:2022-01-24 11:25:41 其他开发

递归迭代方法是否比纯迭代方法更好地确定一个数字是否为素数?

我用 C 语言编写了这个程序,用于测试 数字是否为素数.我还不熟悉算法复杂性和所有大 O 的东西,所以我不确定我的方法是迭代和递归的组合,实际上是否比使用 纯迭代方法. #include#include#includetypedef 结构素节点{长整数键;结构素节点*下一个;}主节点;类型定义结构{素节点 * 头;素数节点 * 尾;素数节点 ..
发布时间:2022-01-24 11:24:46 其他开发

所有的迭代算法都可以递归表达吗?

如果没有,是否有一个很好的反例来说明不存在递归对应的迭代算法? 如果是所有迭代算法都可以递归表示的情况,有没有更难做到的情况? 另外,编程语言在这一切中扮演什么角色?我可以想象,与纯 Java 程序员相比,Scheme 程序员对迭代(=尾递归)和堆栈使用有不同的看法. 解决方案 对此有一个简单的临时证明.由于您可以使用严格的迭代结构构建图灵完备语言,而仅使用递归结构构建图灵完备 ..

递归比循环快吗?

我知道递归有时比循环干净得多,而且我并没有问什么时候应该使用递归而不是迭代,我知道已经有很多问题了. 我要问的是,递归永远比循环快吗?在我看来,你总是能够优化循环并让它比递归函数更快地执行,因为循环不存在不断设置新的堆栈帧. 我专门寻找在递归是处理数据的正确方法的应用程序中递归是否更快,例如在某些排序函数、二叉树等中. 解决方案 这取决于所使用的语言.你写了“语言不可知论",所 ..
发布时间:2022-01-24 11:20:06 其他开发

是否有必要在递归调用的计时器内清除Timeout?

是否有必要在 Coffeescript 的递归调用函数中调用 clearTimeout() ? 我担心的是,如果这个函数每秒运行很多次,不调用 clearTimeout() 是否会随着时间的推移导致某种内存泄漏.我的想法是 JS 垃圾收集器处理这个,但想仔细检查. 我正在研究的 websockets/socket.io 实现中的人为示例: socket.on 'dataReceive ..
发布时间:2022-01-24 10:45:13 前端开发

Julia 是否对递归多态类型执行代码单态化?

我注意到在执行代码单态化的语言(例如:C++、Rust 等)中实现多态递归类型是非常困难的,如果不是不可能的话.这通常是因为编译器需要为每个可能的类型实例化生成代码,这通常会导致无限递归. 支持这一点的语言通常使用类型擦除.编译器不会尝试实例化下一个递归调用,因为它已经知道类型的布局. Julia 执行代码单态化,但它支持多态递归.我的猜测是,它通过延迟实例化泛型类型或函数直到它被实际 ..
发布时间:2022-01-23 19:57:50 其他开发

在 Julia 中使用元编程优化递归函数

按照 this answer 的方法,我试图了解究竟发生了什么以及表达式和生成的函数在 Julia 中是如何工作的元编程的概念内. 目标是使用表达式和生成函数优化递归函数(具体示例,您可以查看上面提供的链接中回答的问题). 考虑以下修改后的斐波那契函数,其中我想计算斐波那契数列直到 n 并将其乘以一个数字 p. 简单的递归实现是 函数 fib(n::Integer, p::Re ..
发布时间:2022-01-23 19:26:37 其他开发

c#中递归泛型类型的问题

我有一些 C# 代码在 mono 和 Microsoft 的 .net 编译器下都能正常编译,但只能在 mono 上运行.错误信息是(我添加的换行符) 未处理的异常:System.TypeLoadException:无法加载类型“Hasse.Groups.Heavy.Product.PowerGroup`1"来自程序集“Hasse,版本=1.0.x.y,文化=中性,PublicKeyToken= ..
发布时间:2022-01-23 15:24:05 C#/.NET

Mono 下的堆栈大小

我编写了一小段递归 F# 代码,以查看在 .NET/Mono 下我可以将多少级递归放入堆栈中.只要递归深度是 2 的精确幂,它就会打印递归深度,因此我会找出最大深度在 2 倍以内. 我使用 System.Threading.Thread (ThreadStart, int) 在具有已定义堆栈空间量的线程中启动代码.在 .Net 下,每级递归似乎需要大约 100 个字节,而我可以在 2G 堆栈 ..
发布时间:2022-01-23 14:58:39 C#/.NET

将 SQL Server 中的递归 CTE 转换为 netezza

我有一个要求,比如我需要将 sql server 中的递归 CTE 转换为 netezza! netezza 会支持递归 CTE 吗? 谁能帮我解决这个问题? 提前致谢,马尼拉蒂南. 解决方案 从 7.2 版开始,Netezza 不支持递归 CTE.如果您能告诉我们您在特定情况下要完成的工作,我们可能会提供解决方法/重写. ..
发布时间:2022-01-23 09:58:29 其他开发

如何在 OpenAPI/Swagger 中递归引用封闭类型定义?

我正在 Swagger Editor 中编写 OpenAPI 定义. 我的一个类型定义包含一个数组,其中包含与父元素相同类型的子元素.IE.像这样: 定义:树节点:类型:对象特性:名称:类型:字符串描述:树节点的名称.孩子们:类型:数组项目:$ref: '#/definitions/TreeNode' 但是,Swagger 编辑器不会在 children 数组中提取递归引用,它只是显示为 ..
发布时间:2022-01-22 17:49:55 其他开发

使用 Ruby/Erlang 迭代生成排列,无需递归或堆栈

我想生成列表的所有排列,但我想在将某些排列添加到堆栈或存储在任何地方之前过滤掉它们. 我将根据一些自定义的临时规则过滤掉排列. 换句话说,我想生成一个大列表(50-300 个元素)的排列列表,但我想在此过程中丢弃大部分生成的排列(我知道完整的数字的排列是 N!). 我已经尝试使用 Ruby 及其 Array.permutation.to_a,但它看起来在执行过程中维护了一个完整的 ..
发布时间:2022-01-22 12:59:16 其他开发

计算方法调用堆栈大小以检查 StackOverflowException

今天早上我回答了一个与 StackoverflowException 相关的问题.该人已询问何时发生 Stackoverflow 异常 查看此链接最简单的方法在 C#、C++ 和 Java 中导致堆栈溢出 所以我的问题是,是否有任何方法可以在我们的程序中动态计算方法调用堆栈的大小,然后在调用方法之前应用检查来检查方法调用堆栈是否有空间来容纳它以防止堆栈溢出异常. 由于我是 jav ..
发布时间:2022-01-22 12:56:37 Java开发

如何实现“无堆栈"?解释语言?

我正在制作我自己的类似 Lisp 的解释语言,并且我想做尾调用优化.我想将我的解释器从 C 堆栈中解放出来,这样我就可以管理我自己从函数到函数的跳转以及我自己的堆栈魔法来实现 TCO.(我真的不是说堆栈本身,只是调用不会将帧添加到 C 堆栈的事实.我想使用我自己的堆栈,它不会随着尾调用而增长).像 Stackless Python 一样,不像 Ruby 或……我猜是标准 Python. 但是 ..
发布时间:2022-01-22 12:46:55 其他开发

Python中的递归有多安全?

我正在做一项 AI 作业,尽管我的教授提出了建议,但我无意用 lisp 写这个作业.但是,我确实想递归地编写它,以使其简洁明了.这是我的问题: 如果我在大型状态空间上执行搜索,我是否会面临堆栈空间不足的重大风险?Python 堆栈有多深? 解决方案 Python 堆栈有多深? python 中默认的递归限制是 1000 帧.您可以使用 sys.setrecursionlim ..
发布时间:2022-01-22 12:42:08 Python