Questions tagged «recursion»

有关对象的问题,例如使用自身的“较小”实例表示的功能,算法或数据结构。

2
如何得出依赖类型的消除符?
在依赖类型的编程中,有两种主要的方法来分解数据并执行递归: 相关模式匹配:函数定义作为多个子句给出。统一可确保所有遗漏的情况都是不可能的,并且外部求解器可确保有充分的递归依据。 消除符:每个归纳数据类型都有一个关联的常数E D,它充当归纳原理,并充当分解类型D的值的递归函数。它们比较冗长,但是具有总计(所有情况都由E D覆盖)并通过构造终止的优点。ddDËdËdE_DddDËdËdE_D 我已经看到了常见数据类型的消除器,例如,其中消除器基本上是数学归纳法,或者L i s t,其中消除器基本上是折叠。ñ一个牛逼ñ一个ŤNat大号我小号吨大号一世sŤList 我已经阅读了几篇有关依存模式匹配的论文,并且许多论文都引用了类型理论,在其中可以定义数据类型,并且该理论提供了消除符。例如,消除相关模式匹配描述了UTT如何基于消除符,以及在存在公理的情况下如何将模式匹配转换为消除。我的理解是,一旦定义了数据类型,该理论便提供了消除器。ķķK 我没有发现(或者至少没有发现,如果我没看过的话)很好地描述了如何导出消除符,包括其类型和语义。 有人可以指出我的引用,该引用描述了如何从数据类型的定义中获得消除符吗?

3
测试二叉树是否为搜索树并计算完整分支的算法
我需要创建一个递归算法,以查看二叉树是否为二叉搜索树,并用假定的全局计数变量计算有多少个完整分支(一个有左右两个子节点的父节点)。这是我的数据结构类的作业。 到目前为止,我有 void BST(tree T) { if (T == null) return if ( T.left and T.right) { if (T.left.data < T.data or T.right.data > T.data) { count = count + 1 BST(T.left) BST(T.right) } } } 但是我真的无法弄清楚这一点。我知道该算法无法解决问题,因为如果第二个if语句不正确,则计数将为零。 有人可以帮我解决这个问题吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.