【发布时间】:2014-03-15 05:44:19
【问题描述】:
我想创建一个函数,其中 rootcheck 有一个列表 L 作为输入,L 始终是 3 个原子(a b c),其中 a 是 x^2 的系数,b 是 x 的系数,c 是常数。它检查方程是否是二次的,使用判别式 (b^2 - 4ac) 并且应该输出这个 (num 'L) 其中 num 是根的数量,L 是包含根本身的列表(使用二次公式),L在没有根的情况下为空。这是我的代码:
(define roots-2
(lambda (L)
(let ((d (- (* (cdr L) (cdr L)) (4 (car L) (caddr L))))))
(cond ((< d 0) (cons(0 null)))
((= d 0) (cons(1 null)))
(else((> d 0) (cons(2 null)))))
))
它没有给我任何身体错误的表达。
我也尝试编写二次函数的代码,甚至尝试了一些在线的,一个编译的 fint 但在我插入输入时给了我一个错误这是二次函数的代码,不是我的!
(define quadratic-solutions
(lambda (a b c) (list (root1 a b c) (root2 a b c))))
(define root1
(lambda (a b c) (/ (+ (- b) (sqrt (discriminant a b c)))
(* 2 a))))
(define root2
(lambda (a b c) (/ (- (- b) (sqrt (discriminant a b c)))
(*2 a))))
(define discriminant
(lambda (a b c) (- (square b) (* 4 (* a c)))))
【问题讨论】:
-
为什么是 CL 标签。您还在搜索 Common Lisp 答案吗?
-
缩进不佳的代码不可读。