2
返回的值有反正我可以從一個循環返回一個值,因爲遞歸必須是在尾部從一個循環
(ns for)
(defn abc [y]
(loop [x 10]
(when (> x 2)
(if (= 2 3) (do (println "test") (recur (- x 2)))
(do (let [x (+ 1 x)
y 2] (println y) (recur (- x 2))))))))
(abc 1)
有反正我可以通過取y,以便函數返回一個值作爲參數並更新y的新值。但是,重複部分必須位於代碼的最後一行,因此我無法將y作爲代碼的最後一行。
例
(ns for)
(defn abc [y]
(loop [x 10]
(when (> x 2)
(if (= 2 3) (do (println "test") (recur (- x 2)))
(do (let [x (+ 1 x)
y 2] (println y) (recur (- x 2)))))))
y)
(abc 1)
因爲RECUR必須的代碼的最後一行這就給我一個錯誤。我已經看過類似的問題,並說把返回值的,如果循環,我試過的結束,但失敗了,給了我一個異常thatthe遞歸只能發生在尾部
可能重複(http://stackoverflow.com/questions/14227972/returning- a值從 - 一個環) – sloth