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

powershell - 如果文件不存在,则使用 PowerShell 将文件移动到远程位置

如果文件不存在,我想递归搜索目录并将文件夹的内容移动到远程服务器并删除文件夹级别。

例如,只复制文件夹 2 的内容,因为 file.txt 不存在。

源服务器

会成为

目标服务器

0 投票
2 回答
2168 浏览

opengl - 如何将递归数据结构发送到 OpenGL 着色器?

如何将递归数据结构(如八叉树)发送到 OpenGL GLSL 着色器?我想,我可以将它作为节点数组发送并使用索引而不是指针,这是个好主意吗?还有其他选择吗?

0 投票
2 回答
2621 浏览

c++ - 多维数组中的运算符 [] 重载 c++

当我打电话时:a7[0][1][100];

我能够获得第一个索引0operator[]但作为索引,我将无法以递归方式获得其他索引值 1 和 100。我如何能够使用operator[]以获得递归的以下索引值。在此示例中,对于 3 维数组,operator[]仅对第一个维度(即 )调用一次0

我的示例代码如下:

0 投票
2 回答
1518 浏览

c++ - 递归调用而不是多个 for 循环调用 C++

在以下示例中,通过 5 个循环,我可以获得每个单独的索引以访问多维数组。如果我不知道数组的维度,实现和递归函数来访问数组,动态系统有什么办法吗?=> 递归实现 for 循环。

例如:


0 投票
1 回答
430 浏览

scala - 对象中值的初始化顺序:如何正确设置循环/递归对象?

以下代码

 

 

有效,如果访问信息的顺序是:

并且输出如预期:

真正存在的列:true
Tenant.id 作为 Tenant_id,Tenant.name 作为 Tenant_name
真正存在的列:true
Node.id 作为 Node_id,Node.tenantId 作为 Node_tenantId,Node.nodeId 作为 Node_nodeId,Node.name 作为 Node_name

但如果顺序颠倒,它会失败:

在这种情况下,输出是

真正存在的列:true
Node.id 作为 Node_id,Node.tenantId 作为 Node_tenantId,Node.nodeId 作为 Node_nodeId,Node.name 作为 Node_name
真正存在的列:假
列 List(null, null)

线程“主”java.lang.NullPointerException 中的异常

使用 Scala 2.10.1

一些背景资料:

  • 对象定义描述了 RDBMS 的逻辑数据模型。
  • 表知道他们的列(子),每个列都知道他的表(父)
  • 外键列具有描述父表中主键列的可选属性
  • 这种关系可以是递归的(节点表是递归的)
  • 表和列的单独常量是必需的。
  • 如果可能的话,我想避免var

我在语言规范(5.4)中找到了一个部分

请注意,对象定义定义的值是惰性实例化的。

这实际上是能够设置它所必需的。我假设“价值”是指整个对象,与其“价值”(属性)相反。

无论如何,显然创建了 columns 属性的实例,但它的元素尚未“物化”,这在第二次运行的输出中可见。

我曾尝试使用早期定义来解决它,但在这种情况下,编译器会抱怨涉及 object 的非法循环引用,因此无法编译:

所以我的问题是:

  • 为什么会失败?
  • columns 属性处于哪个状态(列表存在,但元素为空)?
  • 如何正确设置?或者由于它的循环/递归性质,我应该按照定义的顺序将它实现为一种解决方法吗?

更新/解决方案

基于 0__ 的回答:解决方案包括将 columns 属性声明为惰性并将抽象 val更改为def

至于 columns 属性的状态:如果将-Xcheckinit放入 scalac 的命令行选项中,则会添加额外的运行时检查。在这种情况下,会出现以下错误:

引起:scala.UninitializedFieldError:未初始化字段:RecursiveObjects.scala:35

否则此错误会被静默忽略,因此列表仅包含空值。

0 投票
1 回答
1183 浏览

haskell - 具有自定义列表类型的列表语法

给定自定义类型的列表,例如

以及判断此类列表是否为非空的函数

为什么不在 GHCi 中使用列表参数调用它

或者

工作?使用定义的构造函数调用函数确实有效。

为什么是这样?

0 投票
2 回答
1771 浏览

comparison - 如何表示两个 Coq 归纳类型的大小减小

我正在尝试game为组合游戏定义归纳类型。我想要一个比较方法来判断两个游戏是lessOrEqgreatOrEq还是。然后我可以检查两个游戏是否相等,如果它们都是和。lessOrConfgreatOrConflessOrEqgreatOrEq

但是当我尝试定义用于进行此检查的相互递归方法时,我得到:

错误:无法猜测 的递减参数fix

我认为这是因为每次递归调用只有一个游戏或另一个游戏的大小减小(但不是两者都减小)。我如何向 Coq 表明这一点?

这是我的代码。失败的部分是gameCompare, innerGCompare, listGameCompare,的相互递归定义gameListCompare

0 投票
1 回答
1304 浏览

comparison - 为什么 coq 互感类型必须具有相同的参数?

Arthur 的建议下,我将我的Fixpoint关系改为一种相互Inductive关系,这种关系“建立”了游戏之间的不同比较,而不是“向下钻取”。

但现在我收到一条全新的错误消息:

我认为错误消息是说我需要为所有这些互归纳定义使用相同的确切参数。

我意识到有一些简单的技巧可以解决这个问题(未使用的虚拟变量,长函数类型,其中包含所有内容forall),但我不明白为什么我应该这样做。

有人可以解释这种对互归纳类型的限制背后的逻辑吗?有没有更优雅的方式来写这个?这种限制是否还意味着对彼此的归纳调用都必须使用相同的参数(在这种情况下,我不知道有任何黑客可以节省大量的代码重复)?

(所有类型和术语的定义,例如 compare_quest、game、g1side 等,与我在第一个问题中的定义没有变化。

在 CGT 中,通常两个玩家(名为LeftRight)轮流玩游戏,最后一步的玩家获胜。每个游戏(意味着游戏中的每个位置)都可以读为一组Left' 选项和一组Right' 选项写为{G_L | G_R}。在比较两个游戏时,他们可以通过以下四种不同方式中的任何一种进行比较:<>=||

一个游戏是A < BifB绝对比Afor好Left,不管谁先走。A > BifABfor好LeftA = B如果两个游戏是等价的(从某种意义上说,游戏的总和A + -B是零游戏,所以先走的玩家输了)。而且,A || B如果哪个游戏更适合Left取决于谁先走。

检查两个游戏之间比较的一种方法如下:

  • A <= B如果所有ALeft孩子都是<| B并且A <|所有的孩子都是B正确的孩子。

  • A <| BifA有一个右孩子,<= B或者如果A <=有任何一个B左孩子。

  • 并且,同样对于>=>|

因此,然后通过查看这对关系中的哪一对适用于两个游戏Aand B,可以确定是A < B( A<=Band A<|B)、A=B( A<=Band A>=B)、A > B( A>=Band A>|B) 还是A || B( A<|Band A>|B)。

这是关于 CGT 的 wiki 文章

0 投票
2 回答
1888 浏览

asp.net - 从数据集中生成父子列表(递归关系)

我正在尝试建立一个具有递归关系的列表(HTML)。数据在数据集中,但如果更容易,可以转换为数据表。

我不知道实现这一目标的最佳选择是什么。我正在考虑使用嵌套中继器。

这是数据:

这是我想要产生的输出

0 投票
1 回答
448 浏览

php - 数组树的线性表示

我有一个 1 对 1 的线性树,其中语言 => 类型 => 产品 => 等;语言有很多类型,类型有很多产品等等。

我编写了一个递归函数来返回以下样式的数组:

我想要的是一种递归方法,它将遍历该树并提供一个数组,例如

由于 0,1,2 等于该元素depth,因此我可以构建数据的面包屑。

谢谢你。