明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2576|回复: 8

[已解答] 关于max函数的用法

[复制链接]
发表于 2014-6-23 17:28:32 | 显示全部楼层 |阅读模式
设置一个表:
(setq list1 '( 1 2 3 4 5))
我怎样才可以用 max 函数将  list1 中的数据(5)比较出来是最大的呢?


发表于 2014-6-23 17:38:47 | 显示全部楼层
6.数学运算函数的数量界限
      在Lisp中对表中数据进行求和、求最大值等数学运算时,往往直观的对表直接赋予运算函数,使用语句如“(eval (cons 'MAX numlist))”,一般都可以进行计算,但当表中数据数量大于255时,将会出现错误“bad argument value: does not fit in byte: 256”。
      对于这种情况,我们不必对数据表进行分段,可以直接使用函数apply,语法更简单:(apply 'MAX numlist)。apply可将数据表传送给指定的函数进行求值而不受数据数量的影响。
      受表中数据数量影响的数学运算函数有:+、-、*、/、max、min、logand及logior。

评分

参与人数 1明经币 +1 收起 理由
自贡黄明儒 + 1 很给力!

查看全部评分

 楼主| 发表于 2014-6-23 17:55:57 | 显示全部楼层
谢谢!又学到了一招!!
发表于 2014-6-24 09:23:43 | 显示全部楼层
又学习了一招
发表于 2014-6-24 17:43:06 | 显示全部楼层
ll_j 发表于 2014-6-23 17:38
6.数学运算函数的数量界限
      在Lisp中对表中数据进行求和、求最大值等数学运算时,往往直观的对表直接 ...

LI大师真是  高手啊。。。
基本功深厚啊
发表于 2014-6-24 18:16:39 | 显示全部楼层
本帖最后由 xyp1964 于 2014-6-24 18:17 编辑

;; 这样也许可以不受数量的限制
(car(vl-sort lst '>))

点评

排序求最大值,算法复杂度提高了不只一个级别。  发表于 2014-6-25 12:41
先按从大到小排好,然后 用CAR取得第一个,是这样吧,很少接触VL函数  发表于 2014-6-24 19:35
发表于 2014-6-24 19:47:32 | 显示全部楼层
本帖最后由 nzl1116 于 2014-6-24 19:55 编辑

大部分函数的参数不能超过255个,只有少数几个函数可以,那就是:defun progn while setq repeat foreach vlax-for lambda。只有了解fas文件的内部结构,你就什么都明白了。
还有or and cond command

点评

那就失去意义了  发表于 2014-6-24 21:27

评分

参与人数 1明经币 +1 收起 理由
自贡黄明儒 + 1

查看全部评分

发表于 2014-6-25 08:30:30 | 显示全部楼层
nzl1116 发表于 2014-6-24 19:47
大部分函数的参数不能超过255个,只有少数几个函数可以,那就是:defun progn while setq repeat foreach vlax-for lambda。只有了解fas文件的内部结构,你就什么都明白了。
还有or and cond command

我们都是低手啊。擦汗。
发表于 2014-6-28 19:08:28 | 显示全部楼层
(apply (function max)(list 9 11 2 6 89 6))

点评

(apply 'max '(9 11 2 6 89 6))  发表于 2014-6-28 21:31

评分

参与人数 1明经币 +1 收起 理由
xyp1964 + 1 赞一个!

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-25 02:09 , Processed in 0.195421 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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