我想在clojure
寫一個遞歸函數。該函數返回給定collection的最大數量。如果收集是emty,那麼它應該返回nil
。 我的代碼是:卡住在Clojure遞歸
(defn gum [coll]
(if (empty? coll)
0
(max (first coll)
(gum (rest coll)))))
預期結果:
(gum [1 2 98 -3]) => 98
(gum [1 9]) => 9
(gum []) => nil
但我得到:
(gum [1 2 98 -3]) => 98
(gum [1 9]) => 9
(gum []) => 0 (not desired result - should be `nil`)
這是因爲我一直的(empty? coll)
值作爲0
。如果我保留它作爲nil
然後(gum [1 2 98 -3])
將無法正常工作。如何同時將(gum [])
的值作爲nil
和(gum [1 2 98 -3])
作爲98
的任何建議?
是的,它的工作原理,但不能使用遞歸? – user227666
@ user227666如果要遞歸,則返回唯一元素時,添加條件'(= 1(count coll))'。 – SaltyEgg
我無法得到你,你能詳細說明嗎? – user227666