问题标签 [recursive-datastructures]

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 投票
1 回答
2072 浏览

c# - 实体框架:递归更新父子给我重复

给定下表(在从 Locations 到 Customers 的屏幕截图中 FK 不可见,但它在那里,只是没有刷新......):

D B

还有我的映射:

还有我的更新代码:

我执行以下代码:

因此,我正在更改父子位置的位置代码,更新子位置中产品的产品数量。数量是产品表键的一部分。另外,我正在向父级添加一个新位置。

问题:

  • 如何更新我的产品?因为我更改了部分密钥,所以我无法使用 context.Entry(...) 来检索旧密钥。
  • 添加第二个子位置后,为什么我的上下文中有重复的客户/位置?我最终得到 5 个位置和 2 个客户,而不是 3 个位置和 1 个客户,所以它给了我一个 PK 例外。在将孩子添加到某个位置后,它以某种方式创建了一个新客户。所以它有一个有 2 个位置的客户实体,一个有 3 个位置的客户实体。为什么???
0 投票
1 回答
230 浏览

cakephp - CakePHP 更深层次的递归

我有以下问题。我有以下关系: A->B->C->D 与模型中的各自关系。我需要得到所有属于“A”的“D”

但得到 b.a_id 的错误。

我试过递归 = 2;

但我一直遇到同样的问题。

我究竟做错了什么?PD:对不起,我的英语不好

0 投票
3 回答
1546 浏览

c# - 使用列表进行 C# 递归编程

我正在开发一个程序,其中每个项目都可以包含一组项目(我正在制作一个菜单,它具有树状结构)

目前我将项目作为列表而不是数组,但我觉得我没有充分利用它来简化代码。我选择了一个列表而不是标准数组,因为接口(.add、.remove 等)很有意义。

我有代码来搜索结构并返回名称的路径(即 Item.subitem.subsubitem.subsubsubitem)。下面是我的代码:

我的问题是,是否有更简单的方法来处理列表?关于应该使用列表还是只使用数组,我一直在脑海中反复思考。我有一个列表的唯一原因是我不必在每次添加或删除项目时编写代码来调整数组的大小。

0 投票
1 回答
1038 浏览

serialization - 使用 Jackson (JSON) 序列化递归类

我已经像这样定义了一个 HashMaps 树:

注意类型是递归的:HashMap<K, HashTree<K, V>>. 在 Java 中这很好用,但是当我用 Jackson 序列化时,我得到了堆栈溢出:

我试图用这个来插入序列化,当它遇到哈希树时应该只返回一个字符串“123”。

我什至将 HashTree 扩展到 StringHashTree 以删除那些泛型类型,但我仍然遇到堆栈溢出。有任何想法吗?

0 投票
1 回答
7704 浏览

c++ - 河内之塔 - n peg 解算法

我正在实施河内塔问题以了解更多关于递归的信息。我能够使用 3 peg 案例来实现它,但是,当我想使用更多 pegs(以产生更少的移动)时,我理解 Frame-Stewart 解决方案,我必须打破我拥有的磁盘数量并堆叠到一个peg上当我将磁盘从源钉转移到带有所有中间钉的目标钉时,切勿触摸该钉。但是,我不明白如何将 move(disks, 1, i, {2...K}) 之类的东西写成函数。当我从一开始都不知道它们时,如何在函数原型中写出所有钉子的名称?我在下面给出了我为 3 磁盘解决方案所做的工作,但我需要有关更一般情况的帮助。

我不明白我需要对我的“移动”功能做出什么样的改变来解决一个 6 钉的情况。谢谢

0 投票
2 回答
3416 浏览

python - 递归 dir() 一个 python 对象以查找某种类型或具有某个值的值

我有一个复杂的 Python 数据结构(如果重要,它是一个大的 music21 Score 对象),由于对象结构深处某处存在弱引用,它不会腌制。我以前用堆栈跟踪和python调试器调试过这样的问题,但这总是一个很大的痛苦。是否有一种工具可以在对象的所有属性上递归运行 dir(),查找隐藏在列表、元组、字典等中的对象,并返回与某个值匹配的对象(lambda 函数或类似的东西)。一个大问题是递归引用,因此需要某种备忘录功能(如 copy.deepcopy 使用)。我试过:

我可能可以继续填补这个漏洞(例如,iter不是我想要的 dicts),但在我投入更多时间之前,想知道是否有人知道更简单的答案。它可能是一个非常有用的通用工具。

0 投票
2 回答
1138 浏览

haskell - 为什么归纳数据类型禁止类型递归发生在 -> 前面的类型,如 `data Bad a = C (Bad a -> a)`?

Agda归纳数据类型和模式匹配手册说明:

为了确保归一化,感应事件必须出现在严格的正位置。例如,不允许使用以下数据类型:

因为在构造函数的参数中有一个负面的 Bad 出现。

为什么这个要求对于归纳数据类型是必要的?

0 投票
2 回答
1714 浏览

count - 如何计算方案中给定数字的位数?递归和迭代

我知道如何计算数字的位数之和:

但我只是不知道计算数字。而且也不知道如何通过线性迭代进展来做到这一点。

谢谢!!

0 投票
1 回答
1148 浏览

c++ - 记忆递归 C++

我正在实现一个带有记忆的递归函数以加快速度。该程序的要点如下:

我洗一副牌(红牌和黑牌的数量相等),然后开始正面朝上处理它们。在任何一张牌之后,你可以说“停止”,此时我为每张红牌支付 1 美元,而你为每张黑牌支付 1 美元。你的最佳策略是什么,你愿意花多少钱来玩这个游戏?

我的递归函数如下:

第三个 if 语句是代码的“记忆”部分,它存储了所有必要的值。地图中保存的值可以被认为是一个矩阵,这些值将对应于某些#red 牌和#black 牌。真正奇怪的是,当我对总共 8 张卡片(4 张黑色和 4 张红色)执行代码时,我得到了一个错误的答案。但是当我执行 10 张牌的代码时,我的答案是错误的,但现在我对 4 个黑色和 4 个红色的答案是正确的(8 张牌)!12 张卡片也可以这样说,我得到 12 张卡片的错误答案,但 10 张卡片的正确答案,依此类推。代码中有一些错误,但是我无法弄清楚。

0 投票
2 回答
1219 浏览

scala - Scala 中带有列表的递归类型

与 Scala 中的相互递归类型类似,我试图在 Scala 中创建一个相互递归类型。

我正在尝试制作一个用这种类型定义的图(它可以编译):

但我不明白如何用这种类型实际创建一些东西,因为为了用边 B 和 C 初始化节点 A,我至少需要对 B 和 C 有一个惰性引用,但我不能同时创建他们的边缘集。

是否可以实现这种递归类型?

编辑:

这是我目前用来将显式邻接列表转换为自引用列表的解决方案。

或者,来自一个边缘列表

感谢大家的建议!