考虑以下BNF定义数字树.请注意,树可以是叶子,具有一个子树的节点1,或者具有两个子树的节点2.
tree ::= (’leaf number)
| (’node-1 tree)
| (’node-2 tree tree)
Run Code Online (Sandbox Code Playgroud)
一个.为这些树上的递归过程编写模板.
湾 定义返回t中叶子数的过程(叶子数t)
> (leaf-count ’(leaf 5))
1
> (leaf-count ’(node-2 (leaf 25) (leaf 17)))
2
> (leaf-count ’(node-1
(node-2 (leaf 4)
(node-2 (leaf 2) (leaf 3)))))
3
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的:
;define what a leaf, node-1, and node-2 is
(define leaf list)
(define node-1 list)
(define node-2 list)
;procedure to decide if a list is a leaf or a node
(define (leaf? tree) (number? (car tree)))
(define (node? tree) (pair? …Run Code Online (Sandbox Code Playgroud)