我正在尝试编写一个可以计算 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