问题标签 [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 投票
7 回答
10540 浏览

recursion - 递归算法的迭代版本,以制作二叉树

鉴于此算法,我想知道是否存在迭代版本。另外,我想知道迭代版本是否可以更快。

这是某种伪蟒蛇...

该算法返回对树根的引用

0 投票
4 回答
25853 浏览

sql - 如何在 MSSQL 2005 中创建递归查询?

假设我有下表:

我想在一个查询中检索詹姆斯的所有后代(珍娜、詹妮弗、彼得、爱丽丝、史蒂夫)。谢谢,巴勃罗。

0 投票
4 回答
5630 浏览

python - 我想要一个将所有可能的组合写入文本文件的不同行的程序

我想编写一个程序,将一组变量的每个组合打印到一个文本文件中,创建一个单词列表。每个答案应写在单独的行上,并将 1 位、2 位和 3 位的所有结果写入单个文本文件。

有没有一种简单的方法可以编写一个可以完成此任务的 python 程序?这是打印 1、2 和 3 位可能的所有二进制数字组合时我期望的输出示例:

0 投票
7 回答
16815 浏览

ruby - 如何增加 ruby​​ 应用程序的堆栈大小。递归应用程序获取:堆栈级别太深(SystemStackError)

在 stackoverflow.com 上发布堆栈溢出问题,多么有趣:-)

我正在运行一些递归 Ruby 代码,我得到:"Stack level too deep (SystemStackError)"

(我很确定代码有效,我没有处于无限递归的死亡螺旋中,但这不是重点)

无论如何可以更改我的 Ruby 应用程序允许的堆栈深度/大小?

如果这是 Ruby 中的限制,我不太明白,因为错误显示“堆栈级别”,这给我的印象是 Ruby 以某种方式计算堆栈的“级别”,或者它只是意味着堆栈已满。

我试过在 Vista 和 Ubuntu 下运行这个程序,结果相同。在 Ubuntu 下,我尝试使用 'ulimit -s' 将堆栈大小从 8192 更改为 16000,但这并没有改变任何东西。

编辑:感谢您的反馈。
我确实意识到使用递归函数可能不是最可靠的方法。但这也不是重点。我只是想知道是否有办法增加堆栈大小......期间。正如我所提到的,我确实在运行 ruby​​ 脚本之前尝试运行 ulimit -s 16000 ..没有任何改进..我用错了吗?

Edit2:实际上,我在代码的边缘情况下进行了无限递归。
收到错误时截断的 ruby​​ 堆栈跟踪"Stack level too deep"有点误导。
当具有涉及多个函数的递归行为时,您会得到递归数量比实际数量少得多的印象。在此示例中,可能会在超过 190 次调用后崩溃,但实际上大约是 15000 次调用

-安德烈亚斯

0 投票
11 回答
3071 浏览

java - 重构这个递归方法?

我对递归的想法很陌生,这实际上是我第一次尝试编写递归方法。

我试图实现一个递归函数 Max,它传递一个数组,以及一个保存数组大小的变量,以便打印最大的元素。

它有效,但感觉不对!

我还注意到,我似乎比一般同学更多地使用静态修饰符......

任何人都可以提供任何一般提示以及有关如何改进代码的反馈吗?

}

0 投票
14 回答
345139 浏览

linux - 在 Linux CLI 中以相对于当前目录的路径递归列出文件

这类似于这个问题,但我想在 unix 中包含相对于当前目录的路径。如果我执行以下操作:

它不包括完整路径。例如,我有以下目录结构:

上面的代码将返回:

如何使用标准 Unix 命令包含相对于当前目录的路径?

0 投票
3 回答
34979 浏览

python - Python:使用递归算法作为生成器

最近我写了一个函数来生成具有非平凡约束的某些序列。问题来自一个自然的递归解决方案。现在碰巧的是,即使对于相对较小的输入,序列也是数千个,因此我更愿意使用我的算法作为生成器,而不是使用它来填充所有序列的列表。

这是一个例子。假设我们想用递归函数计算一个字符串的所有排列。以下朴素算法采用额外的参数“存储”,并在找到时附加一个排列:

(请不要在意效率低下,这只是一个例子。)

现在我想把我的函数变成一个生成器,即产生一个排列而不是将它附加到存储列表中:

此代码不起作用该函数的行为类似于一个空生成器)。

我错过了什么吗?有没有办法将上述递归算法变成生成器而不用迭代算法替换它

0 投票
4 回答
1532 浏览

php - PHP如何进行递归函数调用?

PHP(以及其他)将首先执行最深的函数,然后逐步退出。例如,

我正在为模板解析器做一些与上述示例非常相似的事情。它寻找标签

并将其替换为名称为 $tag_name的变量。再举一个例子:

我该怎么做呢?这有意义吗?如果没有,我可以尝试更好地解释。

0 投票
2 回答
2075 浏览

ruby-on-rails - 通过部分实现递归是最佳实践吗?

我需要在 HTML 中显示嵌套的集合结构。我正在使用以下部分进行操作:

这是拥有代码的最佳位置吗?我“觉得”to_html对象上应该有一个方法可以为我转储整个树结构,尽管这可行。

0 投票
3 回答
1532 浏览

sql - 我可以在 Sql Server 2005 视图中使用递归吗?

我试图OPTION (MAXRECURSION 0)在视图中使用来生成日期列表。这似乎不受支持。这个问题有解决方法吗?

编辑以解释我真正想做的事情:

我有 2 张桌子。

table1: int weekday, bool 可用

表 2:datetime 日期,可用布尔型

我想要结果:view1:日期(这里是今年的所有日子),可用(来自 table2 或来自 table1 时不在 table2 中)。

这意味着我必须在工作日的日期申请加入。我希望这个解释是可以理解的,因为我实际上在查询中使用了更多具有更多字段的表。

我找到了这段代码来生成递归: