我对Lisp完全陌生,不知道如何创建此功能。 这是我创建的伪代码来帮助解决该问题
Binary tree children
; This function returns the children of binary tree node
; e.g., 3 -> (6,7)
; e.g., 11 -> (22,23)
(defun tree-node(x))
该函数用于输入数字,将其加倍,然后将其加倍并加1。请帮助。
答案 0 :(得分:2)
将数字加倍(此处存储在名为n
的变量中):(* 2 n)
。
要添加一个:(1+ n)
。请注意,1+
是函数的名称。与(+ n 1)
相同。
现在,假设您具有某个范围(例如,函数体),其中有一个名为n
的变量。现在,您使用d
创建一个新变量let
:
(let ((d (* n 2)))
…)
此新变量在let
主体的范围内(由上面的…
表示)。
现在,我们创建另一个变量d1
。我们现在需要使用let*
,以便d
的范围不仅是正文,而且是let*
的绑定形式:
(let* ((d (* n 2))
(d1 (+ d 1)))
…)
该函数应该称为child-indices
:
(defun child-indices (n)
(let* ((d (* n 2))
(d1 (+ d 1)))
…))
defun
和let
之类的许多形式的主体被称为 implicit progns ,这意味着这些形式返回其主体中最后一个表达式的值。因此,无论我们在上面标记为…
的位置放置哪种形式,最后一个的值(或多个值,但现在暂时保留)都为函数的返回值。
有几种方法可以做到“先返回然后返回”,但现在我们将使用一个列表:
(defun child-indices (n)
(let* ((d (* n 2))
(d1 (+ d 1)))
(list d d1)))