小编use*_*565的帖子

如何将此写为递归Clojure函数?

我将用Python描述我想做什么(我想在Clojure中写这个).我有这个功能:

def f(n):
    s=0
    for d in range(1,n+1):
        s+=d*(n//d)
    return(s)
Run Code Online (Sandbox Code Playgroud)

这基本上是从d = 1到n包含循环,并且总结了d/d的最低值的d倍的值.

在Clojure中我想让它成为一个递归函数.Python等价物:

def f(d, n):
    if d == 0: return 0
    else: return d*(n//d) + f(d-1, n)
Run Code Online (Sandbox Code Playgroud)

然后我会调用函数f(n, n).

我在尝试这个:

(defn f
     ([n] (f n n))
     ([d n]
      (if (> d 0)
         (recur (dec d) n)
        0)))
Run Code Online (Sandbox Code Playgroud)

但是我不知道到目前为止这是否正确,或者在总和或者如何做到这一点等等.

recursion sum clojure

1
推荐指数
1
解决办法
253
查看次数

标签 统计

clojure ×1

recursion ×1

sum ×1