Вам нужно либо (Math/pow b 2)
, либо просто (* b b)
, чтобы получить b ^ 2:
(defn quadraticRoots [a b c]
; for simple squares, often simplify (Math/pow b 2) => (* b b)
(let [discriminant (Math/sqrt (- (Math/pow b 2)
(* 4 a c)))
root-1 (/ (+ (- b) discriminant)
(* 2 a))
root-2 (/ (- (- b) discriminant)
(* 2 a))]
[root-1 root-2]))
с результатом (см. пример задачи ):
; Example: x^2 + 4x - 21 = 0
(let [a 1
b 4
c -21]
, а затем
(quadraticRoots a b c) => [3.0 -7.0]
Вы также можете wi sh использовать git clone
в этом шаблоне проекта , чтобы у вас были рабочие настройки для начала работы.
Обновление
Математические формулы (даже простые) часто не так распознаваемы в компьютерном коде. Альтернативная формулировка вышеуказанного может выглядеть так:
(defn quadratic-roots
"Solve for the 2 roots of a quadratic equation of the form:
ax^2 + bx + c = 0
"
[a b c]
(let [discriminant (Math/sqrt (- (* b b) (* 4 a c)))
neg-b (- b)
inv-a2 (/ 1 (* 2 a))
root-1 (* inv-a2 (+ neg-b discriminant))
root-2 (* inv-a2 (- neg-b discriminant))]
[root-1 root-2]))