0

複数の when を含む継続ループを作成しようとしています。私が現在持っているのはこれです:

(defn test [n]
(loop [x n]
    (when (> x 1)
        (println x))

    (when (even? x)
        (recur (- x 1))
        (println x))
    (when (odd? x)
        (recur (+ x 2))
        (println x))
)

)

clojureでこれを行う方法はありますか?

4

1 に答える 1

2

あなたのコードは正しくありません。数値が偶数または奇数であるため、無限ループに入ります。したがって、各反復recurで常に呼び出されます。また、正確に何をしたいのか明確ではありません。問題を説明すると、より明確な答えを出すことができます。

最初に終了条件を定義する必要があります。この関数に何を返してもらいたいですか? recur次に、終了条件が満たされたときに呼び出されないようにループを構成する必要があります。この場合、関数は最終的に何かを返します。

やや(またはマクロ)などの標準関数を使用して、loopや などの低レベルのプリミティブに頼ることなく、やりたいことを実行できる可能性も高くなります。recurmapfilterreducefor

于 2012-10-13T19:36:16.570 に答える