Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在Clojure中正确使用“iterate”和“partial”?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

大多数对iterate的引用都是针对运算符的,而函数上的所有应用程序都是如此令人困惑,以至于我仍然无法在代码中使用iterate,以及部分是什么. 我正在编写一个编程作业,尝试使用牛顿的方法得到数字n的平方根.也就是说,将猜测作为初始近似值,通过计算近似值和n /近似值的平均值来保持计算新的近似值.继续,直到两个最近的近似值之间的差异小于epsilon. 我首先尝试做近似部分,我相信这是我需要使用
大多数对iterate的引用都是针对运算符的,而函数上的所有应用程序都是如此令人困惑,以至于我仍然无法在代码中使用iterate,以及部分是什么.

我正在编写@L_489_2@编程作业,尝试使用牛顿的方法得到数字n的平方根.也就是说,将猜测作为初始近似值,通过计算近似值和n /近似值的平均值来保持计算新的近似值.继续,直到两个最近的近似值之间的差异小于epsilon.

我首先尝试做近似部分,我相信这是我需要使用迭代和部分.后来epsilon是我需要用“拿”的东西?

这是我没有epsilon的近似代码

(defn sqrt [n guess]
  (iterate (partial sqrt n) (/ (+ n (/ n guess)) 2)))

这段代码不能正常工作,当我输入(sqrt 2 2)时,它给了我(3/2 user => ClassCastException clojure.lang.Cons不能强制转换为Java.lang.number clojure.lang.numbers.divide (numbers.java:155).

我想这是我需要反复迭代的部分?有人可以给我一些提示吗?再次,这是@L_489_2@家庭作业问题,所以请不要直接解决整个问题,我需要一些我可以学习的想法和解释.

解决方法

partial为该函数获取@L_489_2@函数和至少@L_489_2@参数,并返回@L_489_2@需要其余参数的新函数.

(def take-five (partial take 5))
(take-five [1 2 3 4 5 6 7 8 9 10])
;=> (1 2 3 4 5)

iterate通过采用两个参数生成无限序列:函数和种子值.种子值用作生成列表中的第@L_489_2@元素,第二个元素通过将函数应用于种子来计算,第二个值用作函数的输入以获取第三个值,依此类推.

(take-five (iterate inc 0))
;=> (0 1 2 3 4)

ClojureDocs提供了有关这两个功能的良好文档:http://clojuredocs.org/clojure_core/clojure.core/iteratehttp://clojuredocs.org/clojure_core/clojure.core/partial.

大佬总结

以上是大佬教程为你收集整理的如何在Clojure中正确使用“iterate”和“partial”?全部内容,希望文章能够帮你解决如何在Clojure中正确使用“iterate”和“partial”?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。