Math 归纳规范:自上而下vs自下而上vs推理规则?
在这件事上请容忍我。我首先要描述书中的一个例子,然后在最后问我的问题 根据关于编程语言范例的文本: 归纳规格说明是指定一组 价值观为了说明这个方法,我们用它来描述一个特定的例子 自然数N={0,1,2,…}的子集S 自上而下定义: 自然数n在S中当且仅当Math 归纳规范:自上而下vs自下而上vs推理规则?,math,recursion,logic,theory,induction,Math,Recursion,Logic,Theory,Induction,在这件事上请容忍我。我首先要描述书中的一个例子,然后在最后问我的问题 根据关于编程语言范例的文本: 归纳规格说明是指定一组 价值观为了说明这个方法,我们用它来描述一个特定的例子 自然数N={0,1,2,…}的子集S 自上而下定义: 自然数n在S中当且仅当 n=0,或 n−3.∈ 美国 我们知道0∈ 因此,美国3∈ S、 自(3)− 3) =0和 0∈ 美国也一样∈ S、 自(6)−3) =3和3∈ 继续这样下去,我们 可以得出结论,3的所有倍数都是S 其他自然数呢?是1∈ s我们知道1!=0,因
现在问题来了
- 可能最重要的问题是为什么我需要知道这些归纳定义,以及它们在现实世界中如何有用
- 为什么谷歌几乎不返回归纳定义的结果
- 如果自上而下、自下而上和推理规则基本上显示相同的东西,为什么我们需要三种方法来编写相同的东西
- 为什么我很难找到比这本书的例子更复杂的问题的归纳定义,比如下面的例子
1. {2n+3m +1 | n,m ∈ N}
2. {(n, 2n+1) | n ∈ N}
你在这里问了很多问题,希望这个回答能回答所有问题。如果你有什么需要澄清的,请告诉我 你的第一个问题-为什么我们需要归纳定义这是最容易回答的问题。在计算机科学中,大量的结构是归纳式定义的。例如,您的简单链表具有归纳定义
- 空列表是一个链接列表
- 后跟链表的单个节点是链表
- 空树是一个二叉树
- 具有两个子节点的二叉树节点是二叉树
- ∅ 是一个正则表达式
- ε是一个正则表达式
- a是每个字符a的正则表达式
- 如果R1和R2是正则表达式,则R1 | R2是正则表达式
- 如果R1和R2是正则表达式,则R1 R2是正则表达式
- 如果R是正则表达式,则R*是正则表达式
- 如果R是正则表达式,(R)是正则表达式
- 要访问空树,什么也不做
- 要访问由一个节点和两个子树组成的树,请执行以下操作:
- 访问节点
- 访问左子树
- 访问正确的子树
- 单个节点是顺序为0的AVL树
- 一个节点有一个或两个子节点是0阶AVL树,则该节点是1阶AVL树
- 一个节点有两个子节点,它们是n-1阶AVL树,或者一个子节点是n-1阶AVL树,另一个子节点是n-3阶AVL树,它们是n阶AVL树
1. {2n+3m +1 | n,m ∈ N}
2. {(n, 2n+1) | n ∈ N}
type List a
= Empty
| Cons a (List a)
length : List a -> Int
length list =
case list of
Empty ->
0
Cons _ xs ->
1 + length xs