Clojure Koans 递归是偶数? [英] Clojure Koans recursive is-even?
问题描述
我正在研究 Clojure Koans,我正在研究递归 koans.
I'm working through Clojure Koans and I'm up to the recursion koans.
我不明白如何使用递归解决is-even?
.练习部分地将此函数定义为:
I don't understand how to solve is-even?
using recursion. The exercise partially defines this function as:
(defn is-even? [n]
(if (= n 0)
true
(__ (is-even? (dec n)))))
如果我不想使用递归,那么我会将其定义为 (defn is-even? [n] (= (mod n 2) 0))
但这与重点相悖练习.
If I don't want to use recursion then I would define it as (defn is-even? [n] (= (mod n 2) 0))
but that goes against the point of the exercise.
推荐答案
就像 amalloy 所说的,用不"填空.但是如果你假设参数只能是 0 或正数,你就不需要另一个基本情况:dec
确保你总是以 0 结束,奇数像这样返回 false:
Like amalloy said, fill the blanks with "not". But provided you assume the argument can only be 0 or positive, you don't need another base case: dec
makes sure you always end up at 0, and odd numbers return false like this:
(is-even? 0) ==> base case (= 0 0) ==> true.
(is-even? 1) ==> (not (is-even? (dec 1))
==> (not (is-even? 0))
==> (not true)
==> false
(is-even? 2) ==> (not (is-even? 1))
==> (not false)
==> true
等等.
这篇关于Clojure Koans 递归是偶数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!