iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 27
0
自我挑戰組

各種筆記系列 第 27

[Kata] Clojure - Day 27

  • 分享至 

  • xImage
  •  

Recursion 101

In this Kata, you will be given two positive integers a and b and your task will be to apply the following operations:

a = 0 || b = 0 時回傳 [a, b],否則重複 step 2 & 3 計算

i) If a = 0 or b = 0, return [a,b]. Otherwise, go to step (ii);
ii) If a ≥ 2*b, set a = a - 2*b, and repeat step (i). Otherwise, go to step (iii);
iii) If b ≥ 2*a, set b = b - 2*a, and repeat step (i). Otherwise, return [a,b].

Solution

(ns kata.core)

(defn solve [a b]
  (cond 
    (or (zero? a) (zero? b)) (list a b)
    (>= a (* 2 b)) (solve (- a (* 2 b)) b)
    (>= b (* 2 a)) (solve a (- b (* 2 a)))
    :else (list a b)))

上一篇
[Kata] Clojure - Day 26
下一篇
[Kata] Clojure - Day 28
系列文
各種筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言