【发布时间】:2017-11-12 10:19:35
【问题描述】:
我将说明我想用 Python 做什么(我想用 Clojure 编写它)。我有这个功能:
def f(n):
s=0
for d in range(1,n+1):
s+=d*(n//d)
return(s)
这基本上是从 d=1 循环到 n (含),并将 d 的值与 n/d 的下限相加。
在 Clojure 中,我想让它成为一个递归函数。 Python 等价物:
def f(d, n):
if d == 0: return 0
else: return d*(n//d) + f(d-1, n)
然后我会使用f(n, n) 调用该函数。
我正在尝试这个:
(defn f
([n] (f n n))
([d n]
(if (> d 0)
(recur (dec d) n)
0)))
但我不知道到目前为止这是否正确,或者在哪里滑入总和或如何做等等。
【问题讨论】: