Skip to content

Instantly share code, notes, and snippets.

@federkasten
Last active June 26, 2018 03:59
Show Gist options
  • Save federkasten/f6d17152abcf133acaae to your computer and use it in GitHub Desktop.
Save federkasten/f6d17152abcf133acaae to your computer and use it in GitHub Desktop.
(declare expect-memo)
(defn expect*
[n t]
(if (zero? t)
n
(let [nn (inc n)
ps (/ 1 nn)
pf (- 1 ps)
es (* ps (expect-memo nn (dec t)))
ef (* pf (expect-memo 0 (dec t)))
e (+ es ef)]
(max n e))))
(def expect-memo (memoize expect*))
(def expect #(expect-memo 0 %))
@totakke
Copy link

totakke commented Mar 20, 2014

ふと、

(cond
  (> n e) ;; when do not try
  n
  :else ;; when try
  e))))

の部分は、

(max n e)

で良いのではないか、と思いました。

@federkasten
Copy link
Author

(数年越しのreplyですが)更新しました。ありがとうございます!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment