【发布时间】:2011-09-09 03:36:11
【问题描述】:
我正在尝试编写一个可以计算 GPA 的函数。现在我可以进行有限的计算(只有 3 个),但我坚持如何计算更多,而不使用循环或递归(这是主题的要求)如何扩展第 n 个函数?比如:(nth n),如果是这样,这是否意味着我需要编写一个 lambda 表达式?作为一个新手,我可能无法清楚地描述这个问题,真的需要一些帮助..
Glist 是成绩点 Clist 是学分。
GPA=(gradepoint *credithour +gradepoint *credithour) / (credithour之和) 比如:(3*1+3*2+4*1)/(1+2+1 )
这是我的代码:
(defun gpa (Glist Clist)
(format t "~3,2f~%"
(/
(+(nth 0 (mapcar #' * Glist Clist))
(nth 1 (mapcar #' * Glist Clist))
(nth 2 (mapcar #' * Glist Clist)))
(+ (nth 0 Clist)
(nth 1 Clist)
(nth 2 Clist))
);end "/"
);end "format"
(values) );end
【问题讨论】:
-
使用标准缩进,不要重复代码来注释括号(我的意思是,这到底是什么?)。例如:gigamonkeys.com/book/…
标签: lisp common-lisp clisp