问题标签 [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.
haskell - 有没有一种优雅的方式让函数返回相同类型的函数(在元组中)
我正在使用haskell 来实现一种模式,该模式涉及返回值的函数以及它们本身(或相同类型的函数)。现在我已经这样实现了:
这些类型函数的驱动力是一个称为级联的函数:
它接受一个种子函数和一个列表,并返回一个列表,该列表通过将种子函数应用于列表的第一个元素,将其返回的函数应用于列表的第二个元素,依此类推。
这行得通——然而,在将它用于稍微有用的东西的过程中,我注意到很多时候我的基本单元是函数,它们很少返回除自身之外的函数;并且显式声明一个函数返回自身变得有些乏味。我宁愿能够使用像 Monad 的return
函数这样的东西,但是,我不知道bind
这些类型的函数会做什么,特别是因为我从未打算将这些与它们首先返回的函数之外的任何东西联系起来.
试图把它硬塞进一个 Monad 开始让我担心我所做的是否有用,所以,简而言之,我想知道的是:
- 我在做坏事吗?如果不,
- 我之前做过的事情/我在这里重新发明轮子吗?如果不,
- 有没有一种优雅的方式来做到这一点,或者我已经达到了这一点并且因为想要某种
return
类似物而变得贪婪?
(顺便说一句,除此之外,“返回自身的函数”或“递归数据结构(函数)”,我不太确定这种模式叫什么,并且很难对其进行有效的研究——如果任何人都可以给我这个模式的名称(如果它确实有一个),仅此一项就非常有帮助)
php - 此代码是否创建函数的多个实例?
我正在学习如何构建父/子类别列表。我找到了一个很棒的教程并实现了以下代码:
我难以理解的是 PHP 如何处理 foreach 和递归函数。
看来这会导致多个“实例??” 函数和 foreach 循环同时运行...正确吗?
如果这是正在发生的事情,那么随着我的名单的增长和孩子关系的加深,这似乎可能会放缓。这是真的?
c++ - 如何在可变参数模板上生成递归数据结构?
我试图通过这个问题掌握使用 TMP生成递归数据结构的技术。
问题
假设我有一个可变参数模板 template<typename... Ts> struct my_sets { };
。
在my_sets
我想生成一个新类型,其数据成员依赖于Ts
.
例如,我想为其中的每个元素/类型my_sets
拥有一个数据成员std::set<T>
Ts...
我认为实现这一点的一种方法可能是通过使用子类化和递归,但我不确定。
fwiw,如果通过自由函数或普通函数重载来实现 mutator 更直接,那也没关系:
recursive-datastructures - 关于递归关系的 EF 6 Alpha 3 迁移中可能存在的错误?
我必须在复合键上定义递归关系。经过多次尝试,我最终得到了这个:
对于这张桌子
在尝试添加迁移时,我经常遇到同样的错误:“序列不包含任何元素”。因为我“几乎”确定这个定义是正确的,所以我继续重新创建了一个新的数据库,没有迁移。完全没问题,数据库完全没有问题。所以那里有 EF 6 不喜欢的“东西”。我得到了确认,因为如果我尝试获取模式“调用的目标已抛出异常”,EF 电动工具就会爆炸。
如果我从那里重新开始,我会看看迁移现在会发生什么,但我担心不能再使用这个 Db。我非常喜欢这个工具,所以我希望可以解决这个问题。
php - php Iterator - 如何保存所有倒数第二个元素
我很茫然。我用谷歌搜索,在这里搜索,阅读 php 手册几个小时,但我无法提出解决方案。
我得到以下数组结构:
现在我的问题如下:我想保存所有 object_name_x 数组。数组的深度未知,事实上,不同object_name_n对象的深度可以依赖于同一个数组。但它们永远是最后一片叶子。
我怎么解决这个问题。据我所知, RecursiveIteratorIterator 没有办法只考虑倒数第二个对象。
我的输出应该是这样的:
感谢您的时间和帮助!
java - 为什么此方法会导致无限递归调用?
我很难理解为什么这个类不起作用。这是数据结构课程作业的一部分(编辑:作业的截止日期已经过去,我只是想弄清楚......)。该节点是基于 BST 构建的 AVL 树的一部分,我选择实现它的方式是在我的 Node 类中创建方法来查找平衡因子和高度。
该类的结构如下:
}
调用该方法的函数是:
我收到的例外是重复:
c# - 动态深度的锯齿状字典?
我正在尝试从一系列代表深度的字符串中提取,例如:
x
我不关心的数字在哪里。我已经完成了拆分/
和循环,此时在PHP中我会做一些事情,比如检查我在循环中的位置(使用for (i=0; etc)
),然后用它来确定我的深度来构建一个输出数组,如:
问题是“深度”是动态的,可能只有 3/4 深(我可以通过对它们的值进行大量检查i
并单独处理它们来解释)或者说 10 或更深,在这种情况下某种递归函数可能是最好的。
我遇到了将字符串作为数组索引的问题,我需要使用字典,但您必须指定字典中的类型,这意味着您需要了解高级的深度(如果我是,请纠正我错误)在实例化字典对象时。
我猜攻击可能类似于调用递归函数,这样每次调用它时你传递i
指示深度,然后函数调用自身i
每次递减,直到它从输入字符串构建树的一部分,但它是什么存储我在 C# 中使用的我不确定的结构。
最终输出将是一个 CSV,我可以将其作为电子表格打开,如下所示:
也许解决方案的一个方向是使用纯 C# 数组并简单地将标题(例如foo
)存储在其中,将信息保留在数组索引之外,无论如何这可能是最佳实践。谢谢。
ruby - 如何实现摇树操作?
我需要一个我称之为的操作shake_tree
。我已经使用递归算法实现了它,只使用了基本的 ruby-Fortran(引用旧的报价“你可以用任何语言编写Fortran代码。”),但我怀疑有一个更简洁和惯用的ruby 方式。
由于我不知道此操作的通用名称,让我简要介绍一下。我有一个像这个例子一样的哈希值:
:vector_ie1
树的结构中:set_ie3
嵌入了独特的符号。我需要删除树的所有分支,而不是从根到带有符号的叶子的路径。鉴于上面的例子:
会返回:
和
会返回:
更有经验的ruby 编码员将如何处理这项任务?
c - 在 C 中为递归数据结构定义变量
我有一个sortbyName
返回递归数据结构的函数sortedList
。sortList
它本身包含一个指向另一个递归数据结构的指针stud_type
,它们都定义如下。
现在我想在main()
函数中分配一个变量来保存函数的返回值,sortbyName
这样我就可以使用 while 循环遍历它并打印出结果。那么我该如何定义这个变量呢?我试过了sortList curTEST;
,sortList * curTEST;
但无济于事。还是我对sortbyName
函数的定义有问题?
编辑: 我已经尝试编译它并纠正了大部分琐碎而不是那么琐碎的错误/警告,直到它来到这个对我来说没有太大意义的当前错误报告。
在我的main
函数中,我这样定义curTEST
:sortList * curTEST;
c - Looping through recursive list in C
I've just started out with C and I think the whole pointers/malloc/free is driving me mad. I tried to define a simple linear recursive data structure and loop through it, printing each element that I've looped through. (Code as below).
However, I'm getting Segmentation Fault: 11 as soon as I try to move to the next element to "insert" a new element
Furthermore, I have on another larger program a while-loop that functions exactly like this while-loop here except on a "filled" recursive structure. Hence I don't actually need to create any new element, just run through and print each element out. However, in that moment where the loop prints the last element, it crashes with Segmentation Fault: 11 again. I'm guessing it's likely because I tried to do pointer = pointer->next_num
. How do I then correctly run through such a data structure correctly on C anyway?