1

プログラムで関数の 1 つを達成しようとしています。func3 のパラメーターとして list=[abc] があります。これらのアイテムの同等性をテストしたいと思います。それらが等しくない場合は、func2 から返される別のリストを使用して再度呼び出します。これが私がしなければならないことです。func3が等しい項目を持つまで、Conjにこれを[list list1 list2 list3]してもらいたいです。私の関数では、条件が false の場合に conj が空のベクトル r[] を他のリストにマージするようにします。条件が true の場合に返される最終的なリストだけが得られます。true になる前に、条件が false (項目が等しくない) でなければならないと仮定します。誰かが間違った条件で 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)))))
4

2 に答える 2