lanjqka
发表于 2014-1-11 12:46:16
本帖最后由 lanjqka 于 2014-1-11 12:48 编辑
;;ourappend(defun ourappend (l1 l2)
(if (null l2)
nil
(if (null l1)
(cons (car l2) (ourappend l1 (cdr l2)))
(cons (car l1) (ourappend (cdr l1) l2))
)
)
)
;;ourlist(defun ourlist (l1)
(if (null l1)
nil
(cons (car l1) (ourlist (cdr l1)))
)
)
lanjqka
发表于 2014-1-11 12:55:37
本帖最后由 lanjqka 于 2014-1-13 16:44 编辑
;;删除nth对应表项返回新表
(defun remove-nth (n l)
(if (null l)
nil
(if (zerop n)
(cdr l)
(cons (car l) (remove-nth (- n 1) (cdr l)))
)
)
)
lanjqka
发表于 2014-1-11 13:14:03
;; find > 0 的第一个数并返回
(defun first-pos (l)
(if (null l)
nil
(if (> (car l) 0)
(car l)
(first-pos (cdr l))
)
)
)
lanjqka
发表于 2014-1-11 13:34:47
;; 同reverse(defun oureverse (l)
(if (null l)
nil
(ourappend (oureverse (cdr l)) (list (car l)))
)
)
lanjqka
发表于 2014-1-13 00:05:43
;; 判断质数
(defun is-prime (i)
(defun remp (n)
(if (> n (/ i n))
T
(if (zerop (rem i n))
nil
(remp (+ n 1))
)
)
)
(remp 2)
)
lanjqka
发表于 2014-1-13 00:34:43
;; 用新元素new替换表lst中第i项元素
(defun ch-lst (new i lst)
(if (null lst)
nil
(if (zerop i)
(cons new (cdr lst))
(cons (car lst) (ch-lst new (- i 1) (cdr lst)))
)
)
)
Student
发表于 2014-1-13 09:56:51
好,值得借鉴
fl202
发表于 2014-1-13 12:52:07
个人觉得:还是开发新的子函数,编写些同reverse这类,没什么意义。
递归的效率高、代码简洁,可以用来替代或者改进本论坛的一些其它程序。
lanjqka
发表于 2014-1-13 13:17:21
fl202 发表于 2014-1-13 12:52 static/image/common/back.gif
个人觉得:还是开发新的子函数,编写些同reverse这类,没什么意义。
递归的效率高、代码简洁,可以用来替 ...
初学
见谅
抛砖引玉吧
lanjqka
发表于 2014-1-13 13:24:03
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=83019
7题 powerset
多重递归找不到北