Clojure Koans 递归是偶数? [英] Clojure Koans recursive is-even?

查看:38
本文介绍了Clojure Koans 递归是偶数?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在研究 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆