【发布时间】:2013-11-07 04:20:21
【问题描述】:
我正在尝试在我的程序中实现其中一项功能。我在 func3 中有 list=[a b c] 作为参数。我想测试这些项目的相等性。如果它们不相等,我将使用 func2 的另一个列表返回再次调用它。 这是我需要做的。我希望 Conj 执行此操作 [list list1 list2 list3] 直到 func3 具有相等的项目。在我的函数中,我希望 conj 在条件为假时将一个空向量 r[] 合并到其他列表。我现在得到的只是条件为真时的最终列表返回。假设条件必须为假(项目不相等)才能为真。有人可以帮我在错误的条件下使用 conj。谢谢。
;input [1 2 3]
;output [[1 2 3][1 3 4] [3 4 5] ]// numbers for demo only
(defn func3 [list]
(loop [v (vec list) r []]
(if(= (v 0) (v 1) (v 2))
(conj r v)
(let[result (func2 v)]
;i want to merge result to r until the condition is true
(conj r result)
(func3 result)))))
【问题讨论】:
-
说真的,你必须更好地描述你的函数应该做什么。给它一个比
func3更有意义的名字将是一个开始。然后我想知道您的函数如何返回包含不相等项和多个项的列表。 -
这就是我想要做的。 func3 将确定 [1 2 3 4] 中的项目是否相等。如果没有,func2 将计算一个新列表并返回到 func3。 func3 再次执行它的工作,直到它在列表中找到相等的项目。我想打印 func2 的每次计算的结果,包括初始列表。你觉得这有意义吗?
标签: clojure