明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2912|回复: 6

[源码] 递归经典用法回眸

[复制链接]
发表于 2013-2-26 08:17:37 | 显示全部楼层 |阅读模式
本帖最后由 自贡黄明儒 于 2013-2-26 08:20 编辑

  1. ;;递归经典用法回眸 自贡黄明儒 2013年2月19日

  2. ;;[1] n的阶乘
  3. ;;例如(setq n 4),则返回结果为(* n (w1 (1- n)))的值
  4. (defun w1 (n)
  5.   (if (= n 0)
  6.     1
  7.     (* n (w1 (1- n)))
  8.   )
  9. )

  10. ;;[2] 字条串列表=>字符串 By Lee Mac
  11. ;;(BAtte:lst->str (list "A" "B") ",")返回"A,B"
  12. (defun BAtte:lst->str (lst del)
  13.   (if (cdr lst)
  14.     (strcat (car lst) del (BAtte:lst->str (cdr lst) del))
  15.     (car lst)
  16.   )
  17. )

  18. ;;[3] 字符串=>字条串列表 By Lee Mac
  19. ;;(BAtte:str->lst "A,B" ",")返回("A" "B")
  20. (defun BAtte:str->lst (str del / pos)
  21.   (if (setq pos (vl-string-search del str))
  22.     (cons (substr str 1 pos)
  23.           (BAtte:str->lst (substr str (+ pos 1 (strlen del))) del)
  24.     )
  25.     (list str)
  26.   )
  27. )

  28. ;;[4] 自定义max 由yjr111程序改编 自贡黄明儒 2013年2月19日
  29. ;;示例(max1 '("asd" "dfd" "hgrt"))返回"hgrt";(max1 '(4 7 10 3))返回10
  30. (defun max1 (lst / A B)
  31.   (if (setq b (cdr lst))
  32.     (progn (setq a (car lst))
  33.            (setq b (max1 b))
  34.            (cond ((> a b) a)
  35.                  (T b)
  36.            )
  37.     )
  38.     (car lst)
  39.   )
  40. )

  41. ;;[5] 去除表中相同图元 by Gu_xl
  42. ;;(vl-sort '(5 2 2 3 3 3 4 5) '<)返回(2 3 4 5)
  43. (defun gxl-delsame (l)
  44.   (if L
  45.     (cons (car L) (gxl-delsame (vl-remove (car L) (cdr L))))
  46.   )
  47. )

  48. ;;[6] 爆破块中块
  49. ;;(ExplodeBInB (car (entsel)))
  50. (defun ExplodeBInB (EN / ENAME SS1)
  51.   (command "_.explode" EN)  
  52.   (If (setq ss1 (ssget "_p" '((0 . "INSERT"))))
  53.     (Repeat (SsLength SS1)
  54.       (Setq ENAME (SsName SS1 0))
  55.       (SsDel ENAME SS1)
  56.       (ExplodeBInB ENAME)
  57.     )
  58.   )
  59. )

点评

非常好,支持。  发表于 2013-5-24 18:09

评分

参与人数 3明经币 +3 收起 理由
tigcat + 1 很给力!
xiaxiang + 1 评分成功!
革天明 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-2-26 08:55:51 | 显示全部楼层
很不错!支持一下!
发表于 2013-2-26 13:44:48 | 显示全部楼层
支持楼主,算法很重要
发表于 2013-2-26 14:48:58 | 显示全部楼层
感谢 自贡黄明儒 分享程序!
发表于 2013-2-26 20:33:06 | 显示全部楼层
求数值最大值不用递归更简单,
  1. (setq tt '(1 5 100.  -200  4.5))
  2. (apply  'max  tt)

点评

那么,字母大小呢?  发表于 2013-2-26 21:59
发表于 2013-2-26 23:18:49 | 显示全部楼层
本帖最后由 sunny20102 于 2013-2-26 23:19 编辑
sunny20102 发表于 2013-2-26 20:33
求数值最大值不用递归更简单,

自贡黄明儒  那么,字母大小呢?  发表于 1 小时前

acad-str-sort 函数
发表于 2013-2-27 00:48:30 | 显示全部楼层
不错,递归方法经典,计算机课上讲了这个,很有意思
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-1 22:44 , Processed in 0.166315 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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