gpt4 book ai didi

java - Lisp 中的帕斯卡三角形

转载 作者:太空宇宙 更新时间:2023-11-03 18:59:07 26 4
gpt4 key购买 nike

我刚开始学习 Lisp,但我很难理解 this code from Rosetta Code说:

(defun pascal (n)   (genrow n '(1)))(defun genrow (n l)   (when (< 0 n)   //is the command "when" something like if in Java?       (print l)       (genrow (1- n) (cons 1 (newrow l)))))(defun newrow (l)   (if (> 2 (length l))      '(1)      (cons (+ (car l) (cadr l)) (newrow (cdr l)))))

我一直在查看一些有关 lisp 的网站,但仍然感到困惑。我知道的唯一编程语言是 Java。如果有人能用 Java 解释粗体部分的意思,我将不胜感激。

最佳答案

Lisp 使用前缀表示法是因为在其他语言中通常是运算符(即 +、-、>)的东西在 Lisp 中被视为函数。 Lisp 中的 (+ 1 1) 等同于 Java 中的 1 + 1;。您可以将其视为以 1 和 1 作为参数调用 add 函数:add(1, 1) 它只是需要一些时间来适应。

所以 (> 2 (length l)) 等同于 2 > length(l)

'(1) 中的 ' 告诉 Lisp 将后面的内容视为文字。因此,Lisp 不会寻找一个名为 1 的函数(如果没有反引号会发生这种情况),它会返回一个包含 1 作为元素的列表。在 Lisp 中,一种等效的说法是 (quote (1)),它返回包含 1 的文字列表。

关于java - Lisp 中的帕斯卡三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25903972/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com