2012-05-09 16 views
2
(defn matrix-diagonals-odd-p 
    ([matrix] (matrix-diagonals-odd-p matrix 0)) 
    ([matrix offset] 
    (let [len (alength matrix)] 
     (if (> (+ (bit-shift-right len 1) (bit-and len 1)) offset) 
     (if (= (+ (bit-and (get (get matrix offset) offset) 1) 
        (bit-and (get (get matrix (- len 1 offset)) (- len 1 offset)) 1) 
        (bit-and (get (get matrix offset) (- len 1 offset)) 1) 
        (bit-and (get (get matrix (- len 1 offset)) offset) 1)) 4) 
     (recur matrix (inc offset)) 
     false) true)))) 

そして、私はjava.lang.UnsupportedOperationException: Can only recur from tail positionを取得していますが中にコンパイルされません。しかし、この末尾位置です。なぜ/何が与えられますか?再発は完全に末尾再帰関数

+0

これは私にとっては大丈夫です。これは実際にあなたがテストしていることを再度確認できますか?エラーは実際に長さにありますか? –

+0

さて、Clojureを開発する最良の方法は、Javaをコンパイルして実行するのではなく、対話的にREPLを使用することです。あなたが誤って古いバージョンを実行していたと思われます。 –

答えて

1

これはClojure 1.3および1.4で動作します。多分、同じ名前空間に他の機能があり、問題を引き起こすでしょうか?