Lisp函数返回一个数字double,然后是相同的数字double加1

Lisp函数返回一个数字double,然后是相同的数字double加1,lisp,common-lisp,Lisp,Common Lisp,我对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。请提供帮助。要将数字加倍(存储在名为n的变量中):(*2n)

我对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。请提供帮助。

要将数字加倍(存储在名为
n
的变量中):
(*2n)

要添加一个:
(1+n)
。请注意,
1+
是函数的名称。它与
(+n1)
相同

现在,假设您有一个作用域(例如函数体),其中有一个名为
n
的变量。现在,您可以使用
let
创建一个新变量
d

(let ((d (* n 2)))
  …)
此新变量在
let
主体的范围内(由上面的
..
指示)

现在我们创建另一个变量
d1
,它是另一个变量。我们现在需要使用
let*
,这样
d
的范围不仅是主体,而且是
let*
的绑定形式:

(let* ((d (* n 2))
       (d1 (+ d 1)))
  …)
该函数可能被称为子索引:

(defun child-indices (n)
  (let* ((d (* n 2))
         (d1 (+ d 1)))
    …))
许多表单的主体,如
defun
let
都是所谓的隐式程序,这意味着这些表单返回其主体中最后一个表达式的值。因此,无论我们在上面标记为
的位置放置什么形式,最后一个的值(或多个值,但我们暂时将其放在一边)都是函数的返回值

有几种方法可以“先返回这个,然后返回那个”,但我们现在将使用一个列表:

(defun child-indices (n)
  (let* ((d (* n 2))
         (d1 (+ d 1)))
    (list d d1)))

你应该在这方面付出一些努力。Stackoverflow并不是为您编写代码的好地方。我理解,但我在这方面完全是个新手lisp@NnachetaNnyagu因此,如果你对这门语言的知识太少,以至于你无法理解答案,那么这门语言可能不适合你。也许你应该