问题标签 [recursion]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
33 回答
185046 浏览

java - 递归地反转Java中的链表

一段时间以来,我一直在为一个班级从事 Java 项目。它是一个链表的实现(这里称为AddressList,包含称为 的简单节点ListNode)。问题是一切都必须使用递归算法来完成。我能够在没有一种方法的情况下做得很好:public AddressList reverse()

列表节点:

现在我的reverse函数只是调用一个辅助函数,它接受一个参数来允许递归。

我的辅助函数具有private ListNode reverse(ListNode current).

目前,我让它使用堆栈迭代地工作,但这不是规范所要求的。我在 C 中找到了一种算法,它可以递归地反转并手动将其转换为 Java 代码,并且它可以工作,但我不了解它。

编辑:没关系,我在此期间想通了。

当我在这里时,有人发现这条路线有什么问题吗?

0 投票
3 回答
6331 浏览

javascript - 如何使用 window.setTimeout() 在 JavaScript 中编写递归方法?

我正在编写一个 JavaSCript 类,该类具有递归调用自身的方法。

物业说明:

我的问题是我在 setTimeout() 中使用递归。我知道 setTimeout() 将接受一些要执行的字符串,或对函数的引用。由于这个函数是一个对象的方法,我不知道如何从外部调用它。所以我使用了 setTimeout() 的第二种格式,并传入了对方法本身的引用。但它不起作用。

0 投票
2 回答
1319 浏览

haskell - Project Euler 27 上的 C 堆栈溢出

我刚刚开始学习 Haskell,并将阅读书籍和教程与解决 Project Euler 的问题结合起来。我一直坚持问题 27,因为使用以下代码出现“C 堆栈溢出”错误:

欧拉文件

命令窗口

此命令给出欧拉系数 1 和 41(一行 40 个素数)

这个因“C 堆栈溢出”而失败(我想获得问题定义中也提到的系数 -79 和 1601):

请您告诉我,为什么会出现错误以及如何解决?谢谢!

我使用 WinHugs。

0 投票
3 回答
195 浏览

perl - 如何在 Perl 中对复杂数据结构的每个元素执行给定的函数?

我想解码复杂数据结构中的所有 HTML 实体。基本上我正在寻找一个“超级地图()”功能。这是我到目前为止所拥有的:

0 投票
8 回答
3978 浏览

java - Project Euler (P14):递归问题

嗨,我正在做 Euler 项目中的 Collat​​z 序列问题(问题 14)。我的代码适用于低于 100000 的数字,但如果数字更大,则会出现堆栈溢出错误。

有没有办法可以重构代码以使用尾递归,或防止堆栈溢出。代码如下:

0 投票
2 回答
891 浏览

haskell - 是否可以将此递归haskell 函数转换为地图调用?

这是我的代码:

我正在寻找一种使用 map 函数并摆脱这个递归函数的方法。这可能吗?如果可以,我该怎么做?

0 投票
2 回答
1439 浏览

sql - T-SQL Puzzler - 爬取对象依赖项

此代码涉及递归存储过程调用和避免游标名称冲突的“不太好”的方法。最后我不在乎它是否使用游标。只是寻找最优雅的方法。我主要将其用作追踪存储过程层次结构的简单方法(无需购买产品)。我在“动态 sql”中尝试了游标,但运气不佳。我想深入大约 10 个级别。

所需的输出:

它不漂亮,但这里是代码(它没有按预期工作)

0 投票
6 回答
4272 浏览

perl - 找到特定文件后,如何摆脱递归查找功能?

我正在使用该File::Find模块来遍历目录树。找到特定文件后,我想停止搜索。我怎样才能做到这一点?

0 投票
7 回答
38271 浏览

recursion - foldr 与 foldl(或 foldl')的含义

首先,我正在阅读的Real World Haskellfoldl说永远不要使用,而是使用foldl'. 所以我相信它。

但我不清楚何时使用foldrvs. foldl'. 虽然我可以看到它们在我面前展示的不同工作方式的结构,但我太愚蠢了,无法理解什么时候“哪个更好”。我想在我看来,使用哪个并不重要,因为它们都产生相同的答案(不是吗?)。事实上,我之前对这种构造的经验来自 Rubyinject和 Clojure 的reduce,它们似乎没有“左”和“右”版本。(附带问题:他们使用哪个版本?)

任何可以帮助像我这样聪明的人的见解将不胜感激!

0 投票
7 回答
51720 浏览

c++ - Headers Including Each Other in C++

I'm a C++ newbie, but I wasn't able to find the answer to this (most likely trivial) question online. I am having some trouble compiling some code where two classes include each other. To begin, should my #include statements go inside or outside of my macros? In practice, this hasn't seemed to matter. However, in this particular case, I am having trouble. Putting the #include statements outside of the macros causes the compiler to recurse and gives me "#include nested too deeply" errors. This seems to makes sense to me since neither class has been fully defined before #include has been invoked. However, strangely, when I try to put them inside, I am unable to declare a type of one of the classes, for it is not recognized. Here is, in essence, what I'm trying to compile:

A.h

B.h

main.cpp

If it makes a difference, I am using g++ 4.3.2.

And just to be clear, in general, where should #include statements go? I have always seen them go outside of the macros, but the scenario I described clearly seems to break this principle. Thanks to any helpers in advance! Please allow me to clarify my intent if I have made any silly mistakes!