明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: lanjqka

[讨论] 学习 lisp 递归

[复制链接]
 楼主| 发表于 2014-1-11 12:46:16 | 显示全部楼层
本帖最后由 lanjqka 于 2014-1-11 12:48 编辑

;;ourappend
  1. (defun ourappend (l1 l2)
  2.   (if (null l2)
  3.     nil
  4.     (if (null l1)      
  5.       (cons (car l2) (ourappend l1 (cdr l2)))
  6.       (cons (car l1) (ourappend (cdr l1) l2))
  7.     )
  8.   )
  9. )
;;ourlist
  1. (defun ourlist (l1)
  2.   (if (null l1)
  3.     nil
  4.     (cons (car l1) (ourlist (cdr l1)))
  5.   )
  6. )
 楼主| 发表于 2014-1-11 12:55:37 | 显示全部楼层
本帖最后由 lanjqka 于 2014-1-13 16:44 编辑
  1. ;;删除nth对应表项返回新表
  2. (defun remove-nth (n l)
  3.   (if (null l)
  4.     nil
  5.     (if (zerop n)
  6.       (cdr l)
  7.       (cons (car l) (remove-nth (- n 1) (cdr l)))
  8.     )
  9.   )
  10. )
 楼主| 发表于 2014-1-11 13:14:03 | 显示全部楼层
  1. ;; find > 0 的第一个数并返回
  2. (defun first-pos (l)
  3.   (if (null l)
  4.     nil
  5.     (if (> (car l) 0)
  6.       (car l)
  7.       (first-pos (cdr l))
  8.     )
  9.   )
  10. )
 楼主| 发表于 2014-1-11 13:34:47 | 显示全部楼层
;; 同reverse
  1. (defun oureverse (l)
  2.   (if (null l)
  3.     nil
  4.     (ourappend (oureverse (cdr l)) (list (car l)))
  5.   )
  6. )
 楼主| 发表于 2014-1-13 00:05:43 | 显示全部楼层
  1. ;; 判断质数
  2. (defun is-prime (i)
  3.   (defun remp (n)
  4.     (if (> n (/ i n))
  5.       T
  6.       (if (zerop (rem i n))
  7.         nil
  8.         (remp (+ n 1))
  9.       )
  10.     )
  11.   )
  12.   (remp 2)
  13. )
 楼主| 发表于 2014-1-13 00:34:43 | 显示全部楼层
  1. ;; 用新元素new替换表lst中第i项元素
  2. (defun ch-lst (new i lst)
  3.   (if (null lst)
  4.     nil
  5.     (if (zerop i)
  6.       (cons new (cdr lst))
  7.       (cons (car lst) (ch-lst new (- i 1) (cdr lst)))
  8.     )
  9.   )
  10. )
发表于 2014-1-13 09:56:51 | 显示全部楼层
好,值得借鉴
发表于 2014-1-13 12:52:07 | 显示全部楼层
个人觉得:还是开发新的子函数,编写些同reverse这类,没什么意义。

递归的效率高、代码简洁,可以用来替代或者改进本论坛的一些其它程序。
 楼主| 发表于 2014-1-13 13:17:21 | 显示全部楼层
fl202 发表于 2014-1-13 12:52
个人觉得:还是开发新的子函数,编写些同reverse这类,没什么意义。

递归的效率高、代码简洁,可以用来替 ...

初学
见谅
抛砖引玉吧
 楼主| 发表于 2014-1-13 13:24:03 | 显示全部楼层
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=83019
7题 powerset
多重递归找不到北
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 21:40 , Processed in 0.145846 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表