明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 667|回复: 2

[提问] 请问这个递归程序哪里出现了错误?提示:参数类型错误

[复制链接]
发表于 2016-1-25 12:35:22 | 显示全部楼层 |阅读模式
(defun li5(a);本程序用以求和表中所有的数
  (if (= a nil)(setq sum 0) (setq sum (+ (car a) li5(cdr a))))
  )



;还有,递归可以用于命令吗?比如:
;(defun c:li5();本程序用以求和表中所有的数
;(setq a (getstring "请输入一个表"))
; (if (= a nil)(setq sum 0) (setq sum (+ (car a) li5(cdr a))))
  ;)

发表于 2016-1-25 14:07:32 | 显示全部楼层
  1. (defun f (a)
  2.    (if a
  3.        (+ (car a) (f (cdr a)))
  4.        0
  5.     )
  6. )
发表于 2016-1-25 14:34:26 | 显示全部楼层
递归有好多问题,不是一两句能说清楚的,我这里http://bbs.mjtd.com/thread-107136-1-1.html 有个帖子,有兴趣可以看看。
原则上,递归不能被用在外部函数(命令)。
对表求和不是使用递归,正确的方法应该是(apply '+ a)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-5-20 17:21 , Processed in 0.167162 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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