gpt4 book ai didi

clojure - 在 Clojure 中迭代帮助

转载 作者:行者123 更新时间:2023-12-04 04:35:56 25 4
gpt4 key购买 nike

我是 Clojure 的新手,正在尝试使用内置的迭代编写牛顿方法函数。我已经尝试了几件导致以下代码的事情。关于为什么这只会返回空括号的任何想法?我也乐于接受新想法。

(defn within-tol? 
"returns true if the guess is within the given tolerance"
[guess x tolerance]
(< (abs (- (square guess) x)) tolerance))

(defn next-guess
[guess x]
(average guess (/ x guess)))

(defn average
[x y]
(float (/ (+ x y) 2)))

(defn abs
[x]
(cond
(< x 0) (- x)
:else x))

(defn square
[x]
(* x x))

(defn sqrt-iter
[guess x tolerance]
(if (within-tol? guess x tolerance) guess
(sqrt-iter (next-guess guess x) x tolerance)))

(defn sqrt
[guess x tolerance]
(take-while #(within-tol? % x tolerance) (iterate #((sqrt % x tolerance)) guess)))

最佳答案

好像是你的 sqrt是错误的,因为它不使用 next-guess
试试看

(defn sqrt 
[guess x tolerance]
(first (drop-while #(not (within-tol? % x tolerance))
(iterate #(next-guess % x) guess))))

示例:
(sqrt 1 169 0.01) => 13.0

关于clojure - 在 Clojure 中迭代帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19757688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com