Lisp函数返回一个数字double,然后是相同的数字double加1
我对lisp一无所知,不知道如何创建这个函数。 这是我创建的用来帮助我解决它的伪代码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)
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因此,如果你对这门语言的知识太少,以至于你无法理解答案,那么这门语言可能不适合你。也许你应该