问题标签 [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.
sql - 防止触发器的相互递归执行?
假设您有表格Presentations
和Events
. 保存演示文稿并包含基本事件信息(例如位置和日期)时,将使用触发器自动创建事件。(恐怕由于技术原因,不可能简单地将数据保存在一个地方并使用视图。)此外,稍后在演示文稿中更改此信息时,触发器也会将更新复制到事件中,像这样:
现在,客户想要这样,如果用户更改了事件中的信息,它也应该返回到演示文稿。由于显而易见的原因,我不能反过来:
毕竟,这会导致每个触发器一个接一个地触发。我可以做的是last_edit_by
在两个表中添加一个包含用户 ID 的列。如果触发器使用特殊的无效 ID 填充(例如,通过使实际人员的所有用户 ID 为正,但脚本的用户 ID 为负),我可以将其用作退出条件:
这可能可行,但我想做的是向 SQL 服务器指示,在事务中,触发器应该只触发一次。有没有办法检查这个?或者也许是为了检查一个表是否已经受到触发器的影响?
感谢史蒂夫·罗宾斯(Steve Robbins)的回答:
只需将潜在的嵌套UPDATE
语句包装在 IF 条件检查中即可trigger_nestlevel()
。例如:
请注意,这trigger_nestlevel()
似乎是基于 1 的,而不是基于 0 的。如果您希望两个触发器中的每一个都执行一次,但不是更频繁,只需检查trigger_nestlevel() < 3
两个触发器。
php - PHP数组,将数组项的深度递归地附加到具有“深度”键的数组中
根据最底部的示例数组,我希望能够将每个嵌入数组的深度附加到数组内部。例如:
根据下面显示的示例数组,深度为 1,因此它现在应该如下所示:
等等...
我所做的所有递归数组函数尝试都非常尴尬。但是,我查看了具有 getDepth 函数的 RecursiveArrayIterator 。我对如何将它附加到当前数组感到困惑......非常感谢任何帮助,谢谢。
php - 在 smarty 中处理递归的最佳方法是什么?
我在 Smarty 中找到了几种处理递归的方法,主要是基于将模板包含在自身中,这似乎是一种荒谬的资源浪费。我找到了一个解决方案,由 Messju 在 Smarty 提供,似乎恰到好处 - 但它不受支持并且在最新版本的 smarty 中失败:(
有人问:我希望 smarty 打印出一个由条目数组定义的讨论线程。如果一个条目有一个或多个答案,则将这些答案列为数组中所述条目的子项,依此类推。
嵌套数组具有任意深度,并且每个条目将具有任意数量的子项。对我来说,这是我想在模板范围内做的事情,因为我认为它纯粹是显示逻辑。我不想在模板之外处理 HTML 或某种类型的 HTML 占位符。
我希望 smarty 将其打印为嵌套列表:
我开始意识到这可能是一个非常具体的问题,所以我想我会写一个聪明的插件来专门处理这个问题,尽管我宁愿有一个全面的解决方案。
有办法吗?
sql - 如何在递归 SQL 查询中查找子树中的所有节点?
我有一个表,它定义了节点之间的子父关系:
如果parentID
总是指向一个有效的现有节点,那么这自然会定义一个树结构。
如果parentID
是,NULL
那么我们可以假设该节点是根节点。
我将如何:
- 查找作为给定节点的后代的所有节点?
- 查找给定节点下的所有节点到特定深度?
我想将这些中的每一个都作为一个 SQL(我希望它一定是递归的)或两个相互递归的查询来完成。
我在 ODBC 上下文中执行此操作,因此我不能依赖任何供应商特定的功能。
编辑
- 还没有写表,所以添加额外的列/表是完全可以接受的。
- 树可能会经常更新和添加;辅助数据结构/表/列是可能的,但需要保持最新。如果您有任何魔法书籍可以进行此类查询,我想知道。
非常感谢。
delphi - Delphi 文件夹扫描器 - Unicode 文件夹名称
哟。
我需要扫描一个目录及其子文件夹,我使用了 FindFirst 和 FindNext 程序,但是 TSearchRec 的 Name 属性是一个字符串,因此 unicode 文件夹名称(希伯来语、阿拉伯语等)是 '?????' 在名称属性中。
我尝试使用带有 WideFindFirst、WideFindNext 和 TSearchRecW 的 TntComponent。但我还是得到了??????用于文件夹名称。
language-agnostic - 用户输入的递归——优雅还是奇怪?
Dev-cpp 附带一个示例程序 Jackpot,其中有一个 GetResults 函数:
这是一种反复询问用户输入的优雅方式吗?do-while
当然,它比用循环环绕大约 20 行更具可读性。我倾向于喜欢它,但我不经常看到这样的东西,所以我不确定。你怎么看?
编辑: 在你的例子中,递归深度被生命的数量所阻止,所以这看起来不错,因为它不会大于 1000 甚至 100 - 这正是我考虑它的原因,但现在我可以看到它是相当愚蠢的想法:)我想知道谁把它放在一个示例程序中......
感谢您的输入!
recursion - 易递归算法的迭代版本
我想我有一个很简单的问题。我有这个问题,可以用递归函数很容易地解决,但我无法迭代地解决。
假设您有任何布尔矩阵,例如:
男:
我知道这不是一个普通的布尔矩阵,但它对我的示例很有用。你可以注意到那里有某种零路径......
我想创建一个函数来接收这个矩阵和一个存储零的点,并将同一区域中的每个零转换为 2(假设矩阵可以存储任何整数,即使它最初是布尔值)
(就像在 Paint 或任何图像编辑器中绘制区域时一样)
假设我用这个矩阵 M 和右上角零坐标调用函数,结果将是:
好吧,我的问题是如何迭代地做到这一点......希望我没有把它搞砸太多
提前致谢!
曼努埃尔
ps:如果您能用 C、S、python 或伪代码显示该函数,我将不胜感激:D
vb.net - 在 ASP.NET 中显示异常消息的递归方式
我已经开始大量使用异常,我相信我会从它中成长,因为我会通过艰苦的方式学习优缺点,但是在我成为异常大师之前,我想知道这种技术是否是可以接受的。
我打算在我自己的“SorryFailedToSaveYourData”异常中包装一个数据库异常,然后递归地移动显示消息的异常,有点像这样:
这种做法有用吗,还是在处理异常时我完全错过了这条船?我知道您可以创建自己的例外,但对于我们正在从事的项目的规模来说,这似乎有点矫枉过正。
谢谢
c - 将指针传递给C中的递归函数
我刚开始学习C的道路上,遇到了一些困难:
下面列出的代码给了我以下错误:
附加到程序:`/workfolder/cocoa/c_stuff/bookshelf/build/Debug/bookshelf',进程
1674。
无法访问地址 0xa0df194 的内存 无法访问地址 0xa0df194 的内存
代码编译正确,函数第一次运行良好(所有问题都被问到,结构接收数据);但是当用户键入“y”来添加另一本书时,就会发生内存错误。
发生错误的任何想法?
提前致谢!
java - 我该如何弄清楚这个复杂的递归算法?
我刚开始学习用 Java 教授的数据结构和算法。到目前为止,我一生中只学过 C++,所以我对使用 java 还是很陌生。
无论如何,我有一个家庭作业问题,我有点坚持:
编写一个递归方法,返回 N 的二进制表示中 1 的数量。如果 N 为奇数,则使用它等于 N/2 + 1 表示中 1 的数量这一事实。
现在我不确定该怎么做。我已经设置了一个函数,它接受一个整数并将其转换为二进制并将其存储在一个字符串中,但其余的我有点迷失了。
如果我能得到一些指导,那真的很有帮助。
这是我到目前为止所拥有的:
谢谢