gpt4 book ai didi

Lisp 函数返回一个数字加倍然后相同的数字加倍加一

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:22 25 4
gpt4 key购买 nike

我是 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 的变量中):(* 2 n)

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

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

(let ((d (* n 2)))
…)

这个新变量在 let 的主体范围内(由上面的 ... 指示)。

现在我们创建另一个变量d1,它又是一个。我们现在需要使用let*,这样d的作用域不仅仅是body,还有let*的绑定(bind)形式:

(let* ((d (* n 2))
(d1 (+ d 1)))
…)

这个函数应该叫做child-indices:

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

defunlet 等许多形式的主体是所谓的隐式程序,这意味着这些形式返回他们 body 里最后的表情。因此,无论我们在上面标记为 ... 的地方放入什么形式,最后一个的值(或多个值,但让我们暂时将其放在一边)都是函数的返回值。

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

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

关于Lisp 函数返回一个数字加倍然后相同的数字加倍加一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50956898/

25 4 0
文章推荐: python - 当尝试在 python 中打印 a\时扫描字符串文字时 EOL
文章推荐: css - react 灵敏。在媒体查询、 float 问题和字体大小中使用 CSS 更改
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com