【发布时间】:2016-05-01 03:17:20
【问题描述】:
我在这里尝试做的是首先展平任何给定的列表,然后将该列表传递给我的加密函数。虽然这不起作用,我不知道为什么。 这是我到目前为止所拥有的,
(defun flatten (l)
(cond ((null l) l)
((atom l) (list l))
(t (loop for a in l appending (flatten a))))
)
(defun encrypt(enctext)
(flatten enctext)
(if(eq 'A (first enctext)) ;If the first charcater equals 'A'...
(progn ;To allow multiple statements in an if statement
(princ #\B) ; First statement, print this character
(encrypt(rest enctext)))) ;Second statement, run function again passing the rest of the characters
(if(eq 'B (first enctext))
(progn
(princ #\C)
(encrypt(rest enctext))))
)
这就是我调用加密函数的方式
(encrypt '((A)(B))
我应该在“加密”函数中调用“扁平化”函数吗?或者在递归调用之后在“flatten”函数中调用“encrypt”? 以及如何正确传递扁平列表?
【问题讨论】:
标签: lisp common-lisp clisp