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
多重递归找不到北
页: 1 [2] 3 4 5
查看完整版本: 学习 lisp 递归