答案 0 :(得分:1)
与递归函数一样,每次调用时都必须传递n
,k
和j
。这是非常合乎逻辑的,特别是如果你考虑一个特定的函数执行。它只计算增量产品的一个步骤。因此,函数签名如下所示:
the_func(n, k, j):
...
您必须在每次特定计算后递增j以将下一个j
传递给以下执行。此外,您必须添加如下所示的终止条件:
if(k==j):
... Pop back the whole recursion...
答案 1 :(得分:1)
如果必须以递归函数的形式执行此操作,请尝试以下操作:
def f(n: Double, k: Double) = {
def f0(k1:Double): Double =
if (k1 >= 1.0f)
(n-k+k1)/k1 * f0(k1-1)
else
1.0f
f0(k)
}
值得检查搜索foldLeft和foldRight并阅读差异。