我想做一個函數,其中rootcheck有一個列表L作爲輸入,L總是3個原子(abc)其中a是x^2的係數,b和c的係數是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的答案嗎? – Sylwester
縮進的代碼不可讀。 – GoZoner